<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Tuna Документация Blog</title>
        <link>https://tuna.am/en/blog/</link>
        <description>Tuna Документация Blog</description>
        <lastBuildDate>Wed, 15 Jul 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>ru</language>
        <item>
            <title><![CDATA[🔐 Ключи доступа (passkeys) — вход в Tuna без пароля]]></title>
            <link>https://tuna.am/en/blog/webauthn-passkeys/</link>
            <guid>https://tuna.am/en/blog/webauthn-passkeys/</guid>
            <pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Вход в аккаунт по биометрии или PIN — без пароля и одноразовых кодов. Работает с 1Password, Bitwarden, iCloud Keychain, Windows Hello и аппаратными ключами YubiKey.]]></description>
            <content:encoded><![CDATA[<p>Пароли всем надоели: их придумывают, забывают, пересылают в чат «на пару минут», а потом меняют после очередной утечки. В Tuna появился способ забыть о них насовсем — вход по <strong>ключам доступа (passkeys)</strong>. Приложили палец, взглянули в камеру или ввели PIN — и вы уже в аккаунте. Ни пароля, ни кода из приложения-аутентификатора.</p>
<img src="https://tuna.am/blog/img/2026-07-15-webauthn/login.png" alt="Кнопка «Войти с ключом доступа» на странице входа Tuna">
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="что-такое-ключ-доступа">Что такое ключ доступа<a href="https://tuna.am/en/blog/webauthn-passkeys/#%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-%D0%BA%D0%BB%D1%8E%D1%87-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0" class="hash-link" aria-label="Direct link to Что такое ключ доступа" title="Direct link to Что такое ключ доступа" translate="no">​</a></h2>
<p>Ключ доступа (passkey) — это пара криптографических ключей, которая приходит на смену паролю. Приватная половина никогда не покидает ваше устройство, менеджер паролей или аппаратный брелок, а на серверах Tuna оседает только <strong>публичный</strong> ключ. Красть на нашей стороне попросту нечего: сам по себе публичный ключ для входа бесполезен, в отличие от базы паролей.</p>
<p>И ещё одна приятная деталь: каждый ключ намертво привязан к домену <code>tuna.am</code>. Подсунуть его на фишинговый сайт-двойник не выйдет — браузер даже не предложит ключ на чужом адресе. Пароль так не умеет: его можно выманить поддельной страницей или подобрать по утёкшей базе.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="чем-это-удобнее-пароля">Чем это удобнее пароля<a href="https://tuna.am/en/blog/webauthn-passkeys/#%D1%87%D0%B5%D0%BC-%D1%8D%D1%82%D0%BE-%D1%83%D0%B4%D0%BE%D0%B1%D0%BD%D0%B5%D0%B5-%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8F" class="hash-link" aria-label="Direct link to Чем это удобнее пароля" title="Direct link to Чем это удобнее пароля" translate="no">​</a></h2>
<ul>
<li class=""><strong>Нечего запоминать и вводить.</strong> Логин — это один клик и касание пальцем, а не строчка из 16 символов со спецзнаками.</li>
<li class=""><strong>Не выманить фишингом.</strong> Ключ срабатывает только на настоящем домене Tuna — фальшивая страница уйдёт ни с чем.</li>
<li class=""><strong>Один шаг вместо двух.</strong> Passkey сам по себе сочетает два фактора: владение устройством плюс подтверждение личности (биометрия или PIN). Поэтому при входе по ключу Tuna <strong>не спрашивает отдельный одноразовый код</strong> — двухфакторность уже соблюдена.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="где-может-жить-ваш-ключ">Где может жить ваш ключ<a href="https://tuna.am/en/blog/webauthn-passkeys/#%D0%B3%D0%B4%D0%B5-%D0%BC%D0%BE%D0%B6%D0%B5%D1%82-%D0%B6%D0%B8%D1%82%D1%8C-%D0%B2%D0%B0%D1%88-%D0%BA%D0%BB%D1%8E%D1%87" class="hash-link" aria-label="Direct link to Где может жить ваш ключ" title="Direct link to Где может жить ваш ключ" translate="no">​</a></h2>
<p>WebAuthn — это открытый стандарт (FIDO2), а не проприетарная фишка одного вендора. Поэтому Tuna дружит практически с любым современным хранилищем ключей. А их, по большому счёту, два семейства.</p>
<p><strong>Синхронизируемые passkeys</strong> — ключ живёт в вашем менеджере паролей или облачной связке и сам подтягивается на все ваши устройства. Сменили телефон — ключи уже там. Сюда относятся:</p>
<ul>
<li class=""><strong>менеджеры паролей</strong> — 1Password, Bitwarden, Dashlane, NordPass, Proton Pass, а для любителей держать всё локально — KeePassXC;</li>
<li class=""><strong>встроенные хранилища ОС</strong> — iCloud Keychain на Apple, Google Password Manager на Android и в Chrome, Windows Hello на Windows.</li>
</ul>
<p><strong>Аппаратные ключи (FIDO2)</strong> — отдельный физический брелок, из которого приватный ключ не извлекается в принципе. Максимальная защита для тех, кому важно, чтобы секрет не покидал железку:</p>
<ul>
<li class=""><strong>YubiKey</strong> от Yubico — де-факто отраслевой стандарт, версии под USB-A, USB-C и NFC (на скриншоте выше как раз добавлен такой — «Yubico 1»);</li>
<li class=""><strong>Google Titan</strong>, <strong>Feitian</strong>, <strong>Nitrokey</strong> (открытая прошивка), <strong>Token2</strong> и другие совместимые с FIDO2 ключи.</li>
</ul>
<p>Один брелок хранит десятки, а современные модели — и сотни ключей от разных сервисов, так что заводить отдельный «на Tuna» не нужно.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="как-добавить-ключ">Как добавить ключ<a href="https://tuna.am/en/blog/webauthn-passkeys/#%D0%BA%D0%B0%D0%BA-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%BA%D0%BB%D1%8E%D1%87" class="hash-link" aria-label="Direct link to Как добавить ключ" title="Direct link to Как добавить ключ" translate="no">​</a></h2>
<p>Откройте <a href="https://my.tuna.am/profile" target="_blank" rel="noopener noreferrer" class="">Профиль</a> и найдите блок <strong>«Ключи доступа (passkeys)»</strong> рядом с настройками двухфакторной аутентификации. Нажмите <strong>«Добавить ключ»</strong>, а дальше всё сделает браузер: предложит сохранить passkey в менеджер, связку ключей или на аппаратный брелок и попросит подтвердить создание.</p>
<img src="https://tuna.am/blog/img/2026-07-15-webauthn/settings.png" alt="Раздел «Ключи доступа (passkeys)» в профиле Tuna со списком ключей">
<p>К одному аккаунту можно привязать до <strong>10 ключей</strong> — например, по одному на рабочий ноутбук, телефон и физический YubiKey в связке. Каждый ключ виден в списке с датой добавления и временем последнего входа, его легко переименовать или удалить.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="как-войти-по-ключу">Как войти по ключу<a href="https://tuna.am/en/blog/webauthn-passkeys/#%D0%BA%D0%B0%D0%BA-%D0%B2%D0%BE%D0%B9%D1%82%D0%B8-%D0%BF%D0%BE-%D0%BA%D0%BB%D1%8E%D1%87%D1%83" class="hash-link" aria-label="Direct link to Как войти по ключу" title="Direct link to Как войти по ключу" translate="no">​</a></h2>
<p>На странице входа под основной кнопкой появилась кнопка <strong>«Войти с ключом доступа»</strong>. Нажимаете её, выбираете ключ, подтверждаете биометрией или PIN — и вы внутри. Никаких почты, пароля и кода из приложения.</p>
<p>А если в прошлый раз вы заходили именно так, рядом с кнопкой подсветится бейдж <strong>«Последний вход»</strong> — маленькая подсказка, чтобы не гадать, каким способом вы обычно пользуетесь.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="безопасность">Безопасность<a href="https://tuna.am/en/blog/webauthn-passkeys/#%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C" class="hash-link" aria-label="Direct link to Безопасность" title="Direct link to Безопасность" translate="no">​</a></h2>
<ul>
<li class="">На серверах Tuna хранится только публичный ключ — приватная часть остаётся у вас.</li>
<li class="">Привязка к домену <code>tuna.am</code> защищает от фишинга.</li>
<li class="">Каждый вход требует подтверждения пользователя — биометрии или PIN.</li>
<li class="">Счётчик использований помогает выявить попытку клонирования ключа.</li>
</ul>
<p>При этом никто не заставляет бросать привычное: пароль и вход через Google, Yandex или Mail.ru работают как раньше. Ключи доступа их не отменяют, а дополняют — а каким способом входить, решаете вы.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="попробуйте-прямо-сейчас">Попробуйте прямо сейчас<a href="https://tuna.am/en/blog/webauthn-passkeys/#%D0%BF%D0%BE%D0%BF%D1%80%D0%BE%D0%B1%D1%83%D0%B9%D1%82%D0%B5-%D0%BF%D1%80%D1%8F%D0%BC%D0%BE-%D1%81%D0%B5%D0%B9%D1%87%D0%B0%D1%81" class="hash-link" aria-label="Direct link to Попробуйте прямо сейчас" title="Direct link to Попробуйте прямо сейчас" translate="no">​</a></h2>
<p>Загляните в <a href="https://my.tuna.am/profile" target="_blank" rel="noopener noreferrer" class="">Профиль</a>, откройте блок <strong>«Ключи доступа (passkeys)»</strong> и нажмите <strong>«Добавить ключ»</strong> — следующий вход в Tuna займёт одно касание.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/webauthn-passkeys/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/webauthn-passkeys/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>release</category>
            <category>security</category>
            <category>tuna</category>
        </item>
        <item>
            <title><![CDATA[Кто может зайти в ваш внутренний сервис? 5 способов закрыться авторизацией]]></title>
            <link>https://tuna.am/en/blog/apps-access-methods/</link>
            <guid>https://tuna.am/en/blog/apps-access-methods/</guid>
            <pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Как ограничить доступ к внутренним веб-сервисам: VPN, Basic auth, IP-фильтры, прокси с авторизацией и Tuna Apps]]></description>
            <content:encoded><![CDATA[<p>Внутренние сервисы иногда нужно открывать — сотруднику, подрядчику или заказчику. Например, открыть staging, служебную панель, внутреннюю админку или API для интеграций. Или HTTP-сервис без собственной авторизации, вроде Prometheus или Alertmanager.</p>
<p>Возникает задача: не встраивать логин в каждый сервис отдельно, а поставить перед ним слой доступа и решить, кого пускать, каким способом и к каким путям.</p>
<p>Способов решить эту задачу несколько, и каждый хорош для своей ситуации. Разберём от самых простых к более гибким по контролю. В конце — сравнительная таблица.</p>
<p><a class="" href="https://tuna.am/en/docs/apps/">Перейти к разделу Приложения в документации</a></p>
<img src="https://tuna.am/docs/img/apps/policies_list.png" alt="Главная страница приложений">
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="способ-1-vpn-не-выставлять-сервис-наружу-вообще">Способ 1. VPN: не выставлять сервис наружу вообще<a href="https://tuna.am/en/blog/apps-access-methods/#%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1-1-vpn-%D0%BD%D0%B5-%D0%B2%D1%8B%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D1%8F%D1%82%D1%8C-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81-%D0%BD%D0%B0%D1%80%D1%83%D0%B6%D1%83-%D0%B2%D0%BE%D0%BE%D0%B1%D1%89%D0%B5" class="hash-link" aria-label="Direct link to Способ 1. VPN: не выставлять сервис наружу вообще" title="Direct link to Способ 1. VPN: не выставлять сервис наружу вообще" translate="no">​</a></h2>
<p>Классика: сервис живёт в приватной сети, доступ — только через VPN.</p>
<img src="https://tuna.am/blog/img/2026-07-02-apps-access-methods/VPN.webp" alt="VPN">
<p><strong>Когда работает.</strong> В компании уже есть поднятый и поддерживаемый VPN, все пользователи — штатные сотрудники с настроенными клиентами, и никого извне пускать не нужно.</p>
<p><strong>Ограничения:</strong></p>
<ul>
<li class="">Контроль на уровне сети, а не на уровне пользователя и пути. Настроить так, чтобы разработчики имели полный доступ, а дизайнеры — только к /dashboards, не получится.</li>
<li class="">VPN кто-то должен поднимать и поддерживать.</li>
</ul>
<p>Избыточен для небольших проектов. Разворачивать всё это ради одной Grafana и пяти человек — стрельба из пушки по воробьям.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="способ-2-basic-auth-логин-пароль-на-прокси">Способ 2. Basic auth: логин-пароль на прокси<a href="https://tuna.am/en/blog/apps-access-methods/#%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1-2-basic-auth-%D0%BB%D0%BE%D0%B3%D0%B8%D0%BD-%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8C-%D0%BD%D0%B0-%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8" class="hash-link" aria-label="Direct link to Способ 2. Basic auth: логин-пароль на прокси" title="Direct link to Способ 2. Basic auth: логин-пароль на прокси" translate="no">​</a></h2>
<p>Самый быстрый вариант: повесить HTTP basic auth на nginx или прямо на туннель — в Tuna это делается флагом при запуске:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna http </span><span class="token number" style="color:#36acaa">3000</span><span class="token plain"> --basic-auth</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"user:password"</span><br></div></code></pre></div></div>
<img src="https://tuna.am/blog/img/2026-07-02-apps-access-methods/basic_auth.png" alt="Basic auth">
<p><strong>Когда работает.</strong> Нужно на день-два показать демо заказчику или прикрыть тестовый стенд от случайных глаз и ботов. Одна пара логин-пароль, ноль настройки.</p>
<p><strong>Ограничения.</strong></p>
<ul>
<li class="">Не видно, кто заходил. Пароль один на всех, его пересылают в чатах — персональной привязки нет, и вы не узнаете, кто именно был внутри.</li>
<li class="">Доступ нельзя отозвать у одного человека — только сменить пароль сразу всем.</li>
<li class="">Нет ролей, второго фактора и журнала. Basic auth просто спрашивает пароль, но не дает разграничить права или посмотреть историю входов.</li>
</ul>
<p>По сути это замок для честных людей: подходит для демо на пару дней, но не для постоянного доступа к админке.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="способ-3-ip-фильтры-пускать-только-со-своих-адресов">Способ 3. IP-фильтры: пускать только со своих адресов<a href="https://tuna.am/en/blog/apps-access-methods/#%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1-3-ip-%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D1%8B-%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D1%82%D1%8C-%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE-%D1%81%D0%BE-%D1%81%D0%B2%D0%BE%D0%B8%D1%85-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BE%D0%B2" class="hash-link" aria-label="Direct link to Способ 3. IP-фильтры: пускать только со своих адресов" title="Direct link to Способ 3. IP-фильтры: пускать только со своих адресов" translate="no">​</a></h2>
<p>Дать доступ списку IP или подсетей на файрволе, в nginx или на туннеле.</p>
<img src="https://tuna.am/blog/img/2026-07-02-apps-access-methods/ip_filter.png" alt="IP filters">
<p><strong>Когда работает.</strong> Доступ нужен из офиса со статическим адресом или с конкретных серверов (мониторинг, CI). Для машинного трафика с известных адресов — нормальное решение.</p>
<p><strong>Ограничения:</strong></p>
<ul>
<li class="">Когда люди работают из дома, с мобильного интернета и из поездок, и их адреса меняются.</li>
<li class="">Нет персональной привязки. Фильтр отвечает на вопрос, откуда пришли, но не кто пришёл.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="способ-4-собрать-самому-nginx--oauth2-proxy">Способ 4. Собрать самому: nginx + oauth2-proxy<a href="https://tuna.am/en/blog/apps-access-methods/#%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1-4-%D1%81%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D1%8C-%D1%81%D0%B0%D0%BC%D0%BE%D0%BC%D1%83-nginx--oauth2-proxy" class="hash-link" aria-label="Direct link to Способ 4. Собрать самому: nginx + oauth2-proxy" title="Direct link to Способ 4. Собрать самому: nginx + oauth2-proxy" translate="no">​</a></h2>
<p>Полноценная авторизация перед сервисом без правок его кода: реверс-прокси, перед ним oauth2-proxy, OIDC-провайдер, сертификаты.</p>
<img src="https://tuna.am/blog/img/2026-07-02-apps-access-methods/OAuth2_Proxy_horizontal.svg" alt="Nginx + oauth2-proxy">
<p><strong>Когда работает.</strong> У вас есть DevOps-ресурс, нестандартные требования и желание полностью контролировать каждый слой. Так работают многие инфраструктурные команды.</p>
<p><strong>Ограничения:</strong></p>
<ul>
<li class="">Выше порог входа. До запуска нужно связать прокси с провайдером, разобраться с cookie-доменами и редиректами, настроить обновление сертификатов.</li>
<li class="">Нужна поддержка. Связку нужно обслуживать и переделывать при каждой смене требований.</li>
<li class="">Тонкие правила собираются вручную. Чтобы открыть путь только одной группе пользователей и только с MFA, нужно использовать несколько инструментов.</li>
</ul>
<p>Для одного-двух внутренних сервисов такие трудозатраты редко окупаются.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="способ-5-zero-trust-реверс-прокси-готовый-слой-авторизации">Способ 5. Zero Trust реверс-прокси: готовый слой авторизации<a href="https://tuna.am/en/blog/apps-access-methods/#%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1-5-zero-trust-%D1%80%D0%B5%D0%B2%D0%B5%D1%80%D1%81-%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8-%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D1%8B%D0%B9-%D1%81%D0%BB%D0%BE%D0%B9-%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8" class="hash-link" aria-label="Direct link to Способ 5. Zero Trust реверс-прокси: готовый слой авторизации" title="Direct link to Способ 5. Zero Trust реверс-прокси: готовый слой авторизации" translate="no">​</a></h2>
<p>Идея та же, что в способе 4 — проверять каждый запрос до того, как он дойдёт до приложения, — но всю инфраструктуру авторизации берёт на себя готовая платформа. Этот подход называют <a href="https://en.wikipedia.org/wiki/Zero_trust_architecture" target="_blank" rel="noopener noreferrer" class="">Zero Trust</a>. По нему работают корпоративные продукты вроде Cloudflare Access, а в <strong>Tuna</strong> это сервис <a href="https://tuna.am/docs/apps/" target="_blank" rel="noopener noreferrer" class="">Приложения</a>.</p>
<img src="https://tuna.am/docs/img/apps/auth_page.png" alt="Zero Trust">
<p>Как это выглядит на практике. Вы создаёте приложение в веб-интерфейсе и описываете правила доступа: какие пути кому открыты, где требовать второй фактор, кого не пускать вовсе. Проверка происходит на стороне Tuna — до вашего сервиса доходят только запросы, прошедшие все правила. В коде приложения ничего менять не нужно.</p>
<p>Несколько вещей, которые в самосборном варианте потребовали бы отдельных инструментов, здесь есть из коробки:</p>
<ul>
<li class=""><strong>разные способы входа под разных людей</strong> — корпоративный SSO для команды (Google, Yandex, GitHub, GitLab, VK или любой OIDC-провайдер) и одноразовый код на email для внешнего подрядчика, которому не нужно заводить аккаунт;</li>
<li class=""><strong>правила на уровне путей</strong> — например, служебный <code>/api/health</code> оставить открытым для проверок, а всё остальное закрыть; правила комбинируются по email, команде, стране, IP и способу входа;</li>
<li class=""><strong>управление доступом</strong> — режим запроса доступа с ручным одобрением (человек объясняет, зачем ему вход, а вы решаете, пускать ли), видимость активных сессий и отзыв доступа в любой момент: в разделе сессий видно, кто сейчас внутри, и любую сессию можно закрыть точечно или все разом;</li>
<li class=""><strong>сервисные токены</strong> для CI/CD и мониторинга — машинный трафик ходит отдельно от человеческого и так же подчиняется правилам;</li>
<li class=""><strong>журнал и сессии</strong> — в аудит-лог пишется, кто и откуда заходил, кто менял правила и выдавал доступ; видно историю входов и действий администраторов.</li>
</ul>
<p>Если у сервиса нет публичного IP — он на ноутбуке, за NAT, в закрытом контуре — его можно опубликовать через туннель одной командой:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna app my-service </span><span class="token parameter variable" style="color:#36acaa">--url</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">http://127.0.0.1:8080</span><br></div></code></pre></div></div>
<p>Подробный разбор настройки — в <a href="https://tuna.am/docs/apps/" target="_blank" rel="noopener noreferrer" class="">документации</a>, анонс с обзором возможностей — <a href="https://tuna.am/blog/apps/" target="_blank" rel="noopener noreferrer" class="">в блоге</a>.</p>
<p><strong>Ограничения:</strong></p>
<ul>
<li class="">Это решение для веб-сервисов и HTTP API. Доступ к базе данных или SSH-доступ к серверам — отдельные задачи, для них есть <a href="https://tuna.am/docs/tunnels/tcp/" target="_blank" rel="noopener noreferrer" class="">TCP-туннели с IP-фильтрами</a> и <a href="https://tuna.am/docs/bastion/" target="_blank" rel="noopener noreferrer" class="">Бастион</a>.</li>
<li class="">Как любой SaaS, платформа — это внешняя зависимость: если политика компании требует держать контроль доступа строго внутри контура, ваш путь — способ 4.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="сравнение">Сравнение<a href="https://tuna.am/en/blog/apps-access-methods/#%D1%81%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5" class="hash-link" aria-label="Direct link to Сравнение" title="Direct link to Сравнение" translate="no">​</a></h2>
<table><thead><tr><th style="text-align:left"></th><th style="text-align:left">Известен пользователь</th><th style="text-align:left">Правила доступа</th><th style="text-align:left">MFA</th><th style="text-align:left">Отзыв доступа</th><th style="text-align:left">Сложность запуска</th><th style="text-align:left">Поддержка</th></tr></thead><tbody><tr><td style="text-align:left">VPN</td><td style="text-align:left">частично (на уровне сети)</td><td style="text-align:left">нет</td><td style="text-align:left">зависит от VPN</td><td style="text-align:left">вручную, профиль</td><td style="text-align:left">средняя–высокая</td><td style="text-align:left">постоянная</td></tr><tr><td style="text-align:left">Basic auth</td><td style="text-align:left">нет</td><td style="text-align:left">нет</td><td style="text-align:left">нет</td><td style="text-align:left">нельзя точечно</td><td style="text-align:left">минуты</td><td style="text-align:left">нулевая</td></tr><tr><td style="text-align:left">IP-фильтры</td><td style="text-align:left">нет (только откуда)</td><td style="text-align:left">нет</td><td style="text-align:left">нет</td><td style="text-align:left">правкой списка</td><td style="text-align:left">минуты</td><td style="text-align:left">рутина со списками</td></tr><tr><td style="text-align:left">nginx + oauth2-proxy</td><td style="text-align:left">да</td><td style="text-align:left">да, собирается вручную</td><td style="text-align:left">да</td><td style="text-align:left">вручную</td><td style="text-align:left">дни</td><td style="text-align:left">на вашей стороне</td></tr><tr><td style="text-align:left">Zero Trust proxy (Tuna Apps)</td><td style="text-align:left">да</td><td style="text-align:left">да, из интерфейса</td><td style="text-align:left">да</td><td style="text-align:left">в один шаг из интерфейса</td><td style="text-align:left">минуты</td><td style="text-align:left">на стороне платформы</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="итог-как-выбрать">Итог: как выбрать<a href="https://tuna.am/en/blog/apps-access-methods/#%D0%B8%D1%82%D0%BE%D0%B3-%D0%BA%D0%B0%D0%BA-%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C" class="hash-link" aria-label="Direct link to Итог: как выбрать" title="Direct link to Итог: как выбрать" translate="no">​</a></h2>
<p>Показываете демо на пару дней → хватит basic auth на туннеле.</p>
<p>Пускаете только серверы и офис со статическим IP → достаточно IP-фильтров.</p>
<p>Вся команда штатная, VPN уже работает и есть кому его обслуживать → оставайтесь на VPN.</p>
<p>Нужен контроль на уровне пользователей и путей, видно, кто заходил, и доступ нужно забирать точечно — но нет ресурса собирать и поддерживать связку прокси с OIDC — берите Zero Trust proxy.</p>
<p>А если требования запрещают выносить авторизацию из своего контура → собирайте способ 4 и закладывайте время на поддержку.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="попробуйте-прямо-сейчас">Попробуйте прямо сейчас<a href="https://tuna.am/en/blog/apps-access-methods/#%D0%BF%D0%BE%D0%BF%D1%80%D0%BE%D0%B1%D1%83%D0%B9%D1%82%D0%B5-%D0%BF%D1%80%D1%8F%D0%BC%D0%BE-%D1%81%D0%B5%D0%B9%D1%87%D0%B0%D1%81" class="hash-link" aria-label="Direct link to Попробуйте прямо сейчас" title="Direct link to Попробуйте прямо сейчас" translate="no">​</a></h2>
<p>Перейдите в раздел <a href="https://my.tuna.am/team_apps" target="_blank" rel="noopener noreferrer" class="">Приложения</a>, нажмите <strong>+ Добавить приложение</strong> — и закройте свой первый сервис авторизацией за пару минут.</p>
<p>Подробное описание всех возможностей — в <a class="" href="https://tuna.am/en/docs/apps/">документации</a>:</p>
<ul>
<li class=""><a class="" href="https://tuna.am/en/docs/apps/policies/">Политики доступа</a></li>
<li class=""><a class="" href="https://tuna.am/en/docs/apps/access_requests/">Запросы доступа</a></li>
<li class=""><a class="" href="https://tuna.am/en/docs/apps/service_tokens/">Сервисные токены</a></li>
<li class=""><a class="" href="https://tuna.am/en/docs/apps/sessions/">Сессии</a></li>
<li class=""><a class="" href="https://tuna.am/en/docs/apps/settings/">Настройки приложения</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/apps-access-methods/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/apps-access-methods/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>apps</category>
            <category>security</category>
            <category>vpn</category>
            <category>reverse-proxy</category>
        </item>
        <item>
            <title><![CDATA[🔐 Безопасность Секретов и отличие от Паролей - мастер-ключ, шифрование и общая архитектура.]]></title>
            <link>https://tuna.am/en/blog/secrets-security/</link>
            <guid>https://tuna.am/en/blog/secrets-security/</guid>
            <pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Технический разбор - где живёт мастер-ключ, как шифруются секреты и что произойдёт, если утечёт база данных]]></description>
            <content:encoded><![CDATA[<p>Когда вы отдаёте свои пароли, токены и ключи доступа во внешний сервис, главный вопрос — можно ли ему доверять.
Поэтому мы решили показать, как устроена безопасность <a class="" href="https://tuna.am/en/docs/secrets/">Tuna Секретов</a> изнутри: где хранится мастер-ключ, каким алгоритмом шифруются данные и — самое важное — что произойдёт, если нашу инфраструктуру взломают и утечёт вся база данных.</p>
<!-- -->
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>Коротко</div><div class="admonitionContent_BuS1"><p>Значения секретов шифруются <strong>до</strong> записи в базу алгоритмом <strong>AES-256-GCM</strong>. Ключ, которым их можно расшифровать, в базе <strong>не лежит</strong>. Утёкший дамп БД без мастер-ключа — это бесполезный набор зашифрованных данных.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="пароли-и-секреты-две-разные-модели-безопасности">Пароли и секреты: две разные модели безопасности<a href="https://tuna.am/en/blog/secrets-security/#%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D0%B8-%D0%B8-%D1%81%D0%B5%D0%BA%D1%80%D0%B5%D1%82%D1%8B-%D0%B4%D0%B2%D0%B5-%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D0%B5-%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8-%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8" class="hash-link" aria-label="Direct link to Пароли и секреты: две разные модели безопасности" title="Direct link to Пароли и секреты: две разные модели безопасности" translate="no">​</a></h2>
<p>В Tuna есть два хранилища для чувствительных данных — <a class="" href="https://tuna.am/en/docs/passwords/">Менеджер паролей</a> и <a class="" href="https://tuna.am/en/docs/secrets/">Секреты</a>. Они намеренно построены по-разному, потому что решают разные задачи.</p>
<img src="https://tuna.am/blog/img/2026-06-03-secrets-security/00-pwd-vs-secrets.png" alt="Сравнение моделей: пароли шифруются на клиенте, секреты — на сервере" style="width:100%;height:auto">
<p><strong>Менеджер паролей — модель нулевого знания (zero-knowledge).</strong> Ключи шифрования создаются на вашем устройстве и никогда не покидают клиент — браузер или приложение. Шифрование и расшифровка происходят только на вашей стороне, а на сервер уходит уже зашифрованный текст. Принцип, заложенный в основу: <em>компрометация нашей инфраструктуры не должна приводить к компрометации ваших паролей</em> — расшифровать их можно лишь там, где есть мастер-ключ, а он есть только у вас. Обратная сторона — данные доступны только владельцу мастер-ключа: автоматически выдать пароль скрипту или пайплайну, не раскрывая его, в такой модели невозможно.</p>
<p><strong>Секреты — серверное шифрование.</strong> Здесь мастер-ключ находится на стороне платформы, и шифрование выполняет сервер. Это <strong>осознанный компромисс</strong>, и сделан он ради главного сценария секретов — автоматизации. Секрет должен сам, без участия человека, попадать в приложение при запуске, в CI/CD-пайплайн, в скрипт развёртывания. Запуск приложения с подгрузкой переменных, сервисные ключи для CI, автоматический перезапуск при изменении значения — всё это работает именно потому, что сервер способен выдать секрет по запросу авторизованного клиента, не требуя мастер-пароль каждый раз.</p>
<p>Платой за удобство становится доверие к инфраструктуре платформы — технически сервер может расшифровать секрет. Поэтому всё, что описано дальше, — про то, как мы это доверие оправдываем.</p>
<table><thead><tr><th></th><th>Пароли</th><th>Секреты</th></tr></thead><tbody><tr><td>Модель</td><td>Нулевое знание</td><td>Серверное шифрование</td></tr><tr><td>Где находится ключ</td><td>Только у клиента</td><td>На стороне платформы</td></tr><tr><td>Где идёт шифрование</td><td>На клиенте</td><td>На сервере</td></tr><tr><td>Может ли Tuna прочитать данные</td><td>Нет</td><td>Да, для авторизованных операций</td></tr><tr><td>Автоматизация (CI/CD, скрипты)</td><td>Ограничена</td><td>Полноценная</td></tr><tr><td>Главный сценарий</td><td>Хранение и обмен паролями</td><td>Доставка конфигурации приложениям</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="модель-доверия-секретов">Модель доверия секретов<a href="https://tuna.am/en/blog/secrets-security/#%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C-%D0%B4%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%8F-%D1%81%D0%B5%D0%BA%D1%80%D0%B5%D1%82%D0%BE%D0%B2" class="hash-link" aria-label="Direct link to Модель доверия секретов" title="Direct link to Модель доверия секретов" translate="no">​</a></h2>
<p>Раз сервер умеет расшифровывать секреты, главный принцип звучит так: <strong>база данных не должна содержать ничего, чем можно расшифровать секреты</strong>. Даже если у злоумышленника окажется полный дамп таблиц, в нём не должно быть достаточно материала, чтобы получить исходные значения.</p>
<p>Достигается это классической схемой <strong>конвертного шифрования</strong> (envelope encryption) — двухуровневой иерархией ключей.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="конвертное-шифрование-два-уровня-ключей">Конвертное шифрование: два уровня ключей<a href="https://tuna.am/en/blog/secrets-security/#%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%BD%D0%BE%D0%B5-%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B2%D0%B0-%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F-%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9" class="hash-link" aria-label="Direct link to Конвертное шифрование: два уровня ключей" title="Direct link to Конвертное шифрование: два уровня ключей" translate="no">​</a></h2>
<img src="https://tuna.am/blog/img/2026-06-03-secrets-security/01-key-hierarchy.png" alt="Иерархия ключей: мастер-ключ оборачивает ключ команды, ключ команды шифрует значения секретов" style="width:100%;height:auto">
<p>В системе два уровня ключей:</p>
<ol>
<li class="">
<p><strong>Мастер-ключ платформы (KEK, Key Encryption Key).</strong> Хранится на стороне Tuna и в базу данных не попадает. Сам по себе он ничего пользовательского не шифрует — его единственная задача «оборачивать» (защищать) ключи команд.</p>
</li>
<li class="">
<p><strong>Ключ команды (DEK, Data Encryption Key).</strong> Для каждой команды генерируется свой случайный ключ — криптографическим генератором случайных чисел. Именно им шифруются значения секретов этой команды.</p>
</li>
</ol>
<p>Ключ команды не хранится в открытом виде: он зашифрован мастер-ключом и в таком «обёрнутом» виде лежит в базе. Чтобы им воспользоваться, сервер сначала разворачивает его мастер-ключом в памяти.</p>
<p>Получается цепочка зависимостей: <strong>значение секрета</strong> защищено <strong>ключом команды</strong>, а <strong>ключ команды</strong> защищён <strong>мастер-ключом</strong>. Разорвав любое звено, дальше пройти нельзя.</p>
<p>Любопытно, что <a class="" href="https://tuna.am/en/blog/password-manager/">менеджер паролей</a> построен на той же идее конвертного шифрования — с двумя принципиальными отличиями: «конверт» там запечатывается асимметрично, на паре открытого и закрытого ключей, а корневой ключ остаётся на стороне клиента, а не сервера. Схема одна и та же, по-разному распределено лишь доверие: секреты настроены на автоматизацию, пароли — на нулевое знание.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="где-и-как-хранится-мастер-ключ">Где и как хранится мастер-ключ<a href="https://tuna.am/en/blog/secrets-security/#%D0%B3%D0%B4%D0%B5-%D0%B8-%D0%BA%D0%B0%D0%BA-%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D1%82%D1%81%D1%8F-%D0%BC%D0%B0%D1%81%D1%82%D0%B5%D1%80-%D0%BA%D0%BB%D1%8E%D1%87" class="hash-link" aria-label="Direct link to Где и как хранится мастер-ключ" title="Direct link to Где и как хранится мастер-ключ" translate="no">​</a></h2>
<p>Это основной для всей схемы вопрос, поэтому разберем каждое место хранения:</p>
<ul>
<li class=""><strong>Не в базе данных.</strong> Мастер-ключ принципиально отделён от данных, которые он защищает. В дампе базы его нет.</li>
<li class=""><strong>Не в коде и не в репозитории.</strong> Он не зашит в исходники, а передаётся сервису извне — из защищённого хранилища конфигурации платформы.</li>
<li class=""><strong>Только в памяти процесса.</strong> Сервер держит ключ в оперативной памяти на время работы и не пишет его на диск в открытом виде.</li>
<li class=""><strong>Полноценный 256-битный ключ.</strong> Этого достаточно, чтобы перебор был вычислительно невозможен.</li>
</ul>
<p>Главный вывод: <strong>доступ к базе данных и доступ к мастер-ключу — это два разных уровня доступа</strong> с разными правами. Компрометация одного из них не означает автоматически компрометацию второго.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="жизненный-цикл-секрета-запись-и-чтение">Жизненный цикл секрета: запись и чтение<a href="https://tuna.am/en/blog/secrets-security/#%D0%B6%D0%B8%D0%B7%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D1%86%D0%B8%D0%BA%D0%BB-%D1%81%D0%B5%D0%BA%D1%80%D0%B5%D1%82%D0%B0-%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C-%D0%B8-%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D0%B5" class="hash-link" aria-label="Direct link to Жизненный цикл секрета: запись и чтение" title="Direct link to Жизненный цикл секрета: запись и чтение" translate="no">​</a></h2>
<p>Шифрование и расшифровка встроены в слой работы с данными и происходят прозрачно — приложение никогда не пишет открытое значение в базу и никогда не читает его оттуда напрямую.</p>
<img src="https://tuna.am/blog/img/2026-06-03-secrets-security/02-lifecycle.png" alt="Последовательность сохранения и чтения секрета: шифрование перед записью, расшифровка после чтения" style="width:100%;height:auto">
<p><strong>При сохранении</strong> значение шифруется ключом команды ещё до записи. Для каждого значения берётся свой случайный одноразовый вектор (nonce) — поэтому даже два одинаковых секрета выглядят в базе по-разному. В хранилище попадает только зашифрованный текст.</p>
<p><strong>При чтении</strong> происходит обратный процесс: сервер достаёт шифр, разворачивает ключ команды и расшифровывает данные. Открытое значение существует только в памяти процесса ровно столько, сколько нужно, чтобы отдать его авторизованному клиенту.</p>
<p>Мы используем режим <strong>GCM</strong> (Galois/Counter Mode) — это <em>аутентифицированное</em> шифрование. Помимо конфиденциальности оно гарантирует целостность: если кто-то изменит хотя бы один байт зашифрованных данных в базе, расшифровка не вернёт «мусор», а честно провалится с ошибкой проверки. Подделать или незаметно подменить значение в обход сервера не получится.</p>
<p>В транзите всё дополнительно защищено TLS — между вашим клиентом и API данные идут по зашифрованному каналу.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="что-лежит-в-базе-зашифровано-а-что-открыто">Что лежит в базе зашифровано, а что открыто<a href="https://tuna.am/en/blog/secrets-security/#%D1%87%D1%82%D0%BE-%D0%BB%D0%B5%D0%B6%D0%B8%D1%82-%D0%B2-%D0%B1%D0%B0%D0%B7%D0%B5-%D0%B7%D0%B0%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BE-%D0%B0-%D1%87%D1%82%D0%BE-%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%BE" class="hash-link" aria-label="Direct link to Что лежит в базе зашифровано, а что открыто" title="Direct link to Что лежит в базе зашифровано, а что открыто" translate="no">​</a></h2>
<p>Разбор того, какие данные и в каком виде реально хранятся в базе:</p>
<table><thead><tr><th>Зашифровано (AES-256-GCM)</th><th>В открытом виде</th></tr></thead><tbody><tr><td>Значения секретов</td><td>Имена переменных</td></tr><tr><td>Заметки к секретам</td><td>Типы значений</td></tr><tr><td>Ключ команды (в обёрнутом виде)</td><td>Уровень видимости</td></tr><tr><td></td><td>Структура: проекты, окружения, конфигурации</td></tr><tr><td></td><td>Метки времени создания и изменения</td></tr></tbody></table>
<p>Да, <strong>метаданные — это тоже информация</strong>. Даже не видя значений, по именам переменных можно судить о том, какими сервисами и технологиями вы пользуетесь. Сами секреты при этом остаются зашифрованными. Но это снова небольшой компромисс в угоду удобству и быстроте работы.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="что-будет-если-утечёт-база-данных">Что будет, если утечёт база данных<a href="https://tuna.am/en/blog/secrets-security/#%D1%87%D1%82%D0%BE-%D0%B1%D1%83%D0%B4%D0%B5%D1%82-%D0%B5%D1%81%D0%BB%D0%B8-%D1%83%D1%82%D0%B5%D1%87%D1%91%D1%82-%D0%B1%D0%B0%D0%B7%D0%B0-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" class="hash-link" aria-label="Direct link to Что будет, если утечёт база данных" title="Direct link to Что будет, если утечёт база данных" translate="no">​</a></h2>
<p>Это сценарий, ради предотвращения которого вся схема и строилась. Представим худшее: злоумышленник получил полный дамп нашей базы.</p>
<img src="https://tuna.am/blog/img/2026-06-03-secrets-security/03-db-leak.png" alt="Модель угроз при утечке базы: без мастер-ключа расшифровать значения невозможно" style="width:100%;height:auto">
<p><strong>Что у него на руках:</strong></p>
<ul>
<li class="">Зашифрованные значения секретов — шифр AES-256-GCM, статистически неотличимый от случайного шума.</li>
<li class="">Ключ команды — но он сам зашифрован мастер-ключом.</li>
<li class="">Метаданные — имена, типы, структура проектов.</li>
</ul>
<p><strong>Чего у него нет:</strong></p>
<ul>
<li class=""><strong>Мастер-ключа.</strong> Его нет в базе — он на стороне сервера, куда дамп базы доступа не даёт.</li>
</ul>
<p>Цепочка обрывается на первом же шаге. Чтобы расшифровать значение, нужен ключ команды. Чтобы развернуть ключ команды — нужен мастер-ключ. Мастер-ключа в дампе нет, а взломать AES-256 перебором невозможно. <strong>Значения секретов остаются защищены.</strong> Злоумышленник видит лишь каркас: имена и структуру, но не содержимое.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="границы-защиты">Границы защиты<a href="https://tuna.am/en/blog/secrets-security/#%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B-%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D1%8B" class="hash-link" aria-label="Direct link to Границы защиты" title="Direct link to Границы защиты" translate="no">​</a></h3>
<p>Никакая схема не защищает от всего, и важно понимать её рамки:</p>
<ul>
<li class=""><strong>Если утечёт И база, И мастер-ключ одновременно</strong> — защита падает. Именно поэтому они хранятся раздельно, с разными правами доступа: чтобы одна уязвимость не вскрывала сразу оба уровня.</li>
<li class=""><strong>Метаданные видны</strong> при утечке базы — об этом сказано выше.</li>
<li class=""><strong>Реакция на инцидент.</strong> При подозрении на компрометацию правильный шаг — ротация: смена мастер-ключа, перевыпуск <a class="" href="https://tuna.am/en/docs/secrets/">сервисных ключей</a> и обновление самих секретов в их первоисточниках. Сервисные ключи можно выпускать с ограниченным сроком жизни именно на такой случай.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="дополнительные-уровни-защиты">Дополнительные уровни защиты<a href="https://tuna.am/en/blog/secrets-security/#%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D0%B8-%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D1%8B" class="hash-link" aria-label="Direct link to Дополнительные уровни защиты" title="Direct link to Дополнительные уровни защиты" translate="no">​</a></h2>
<p>Шифрование — это фундамент, но не единственный слой. Доступ к секретам ограничен ещё на нескольких уровнях:</p>
<ul>
<li class=""><strong>Скрытые значения (Restricted).</strong> Секрет с такой видимостью не отдаётся через API и не попадает в выгрузки — даже авторизованному пользователю показывается только факт его существования.</li>
<li class=""><strong>Сервисные ключи с узким доступом.</strong> Для CI/CD выпускаются ключи, привязанные к конкретной конфигурации, с правами только на чтение или на чтение и запись, и с опциональным сроком действия. Утечка такого ключа не открывает доступ ко всем секретам команды.</li>
<li class=""><strong>Ограничение по IP (Trusted IP).</strong> Доступ к конфигурации можно ограничить списком разрешённых адресов и подсетей в формате CIDR.</li>
<li class=""><strong>Полный аудит.</strong> Все изменения внутри конфигураций журналируются — видно, кто и когда менял каждый секрет.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="что-в-планах">Что в планах<a href="https://tuna.am/en/blog/secrets-security/#%D1%87%D1%82%D0%BE-%D0%B2-%D0%BF%D0%BB%D0%B0%D0%BD%D0%B0%D1%85" class="hash-link" aria-label="Direct link to Что в планах" title="Direct link to Что в планах" translate="no">​</a></h2>
<p>Сейчас Tuna Секреты — это централизованное и зашифрованное хранилище. Логичный следующий шаг — сделать его <strong>источником истины</strong>, из которого секреты автоматически синхронизируются туда, где они нужны.</p>
<img src="https://tuna.am/blog/img/2026-06-03-secrets-security/04-future-sync.png" alt="Планы: синхронизация секретов из Tuna в Vault, Kubernetes Secrets, GitHub и GitLab CI/CD" style="width:100%;height:auto">
<p>В планах — интеграции для односторонней синхронизации:</p>
<ul>
<li class=""><strong>HashiCorp Vault</strong> — отправка секретов в Vault, чтобы Tuna стала удобным интерфейсом управления, а приложения продолжали читать их привычным способом.</li>
<li class=""><strong>Kubernetes Secrets</strong> — синхронизация конфигурации напрямую в секреты нужного namespace кластера.</li>
<li class=""><strong>GitHub Actions</strong> — публикация в encrypted secrets репозитория или организации для использования в пайплайнах.</li>
<li class=""><strong>GitLab CI/CD</strong> — синхронизация в CI/CD variables проектов и групп.</li>
</ul>
<p>Идея в том, чтобы вы редактировали секрет в одном месте, а он автоматически и безопасно доходил до всех ваших окружений — без копирования значений между десятком панелей.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="итог">Итог<a href="https://tuna.am/en/blog/secrets-security/#%D0%B8%D1%82%D0%BE%D0%B3" class="hash-link" aria-label="Direct link to Итог" title="Direct link to Итог" translate="no">​</a></h2>
<p>Безопасность Tuna Секретов держится на нескольких простых и проверенных принципах:</p>
<ul>
<li class=""><strong>Две модели под две задачи</strong> — пароли шифруются на клиенте (мы их не видим), секреты — на сервере, ради автоматизации.</li>
<li class=""><strong>AES-256-GCM</strong> — аутентифицированное шифрование значений до записи в базу.</li>
<li class=""><strong>Конвертное шифрование</strong> — мастер-ключ защищает ключи команд, ключи команд защищают данные.</li>
<li class=""><strong>Мастер-ключ отделён от данных</strong> — его нет ни в базе, ни в коде, и утёкший дамп БД бесполезен.</li>
<li class=""><strong>Слои доступа сверху</strong> — видимость, сервисные ключи, ограничение по IP и аудит.</li>
</ul>
<p>Мы не делаем вид, что защита абсолютна, и открыто показываем её границы — потому что доверие строится на прозрачности, а не на маркетинговых обещаниях.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/secrets-security/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/secrets-security/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>security</category>
            <category>secrets</category>
            <category>tuna</category>
        </item>
        <item>
            <title><![CDATA[🆕 Приложения — Zero Trust доступ к вашим сервисам]]></title>
            <link>https://tuna.am/en/blog/apps/</link>
            <guid>https://tuna.am/en/blog/apps/</guid>
            <pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Защищённый reverse proxy с авторизацией, политиками доступа и SSO]]></description>
            <content:encoded><![CDATA[<p>Мы рады представить новый компонент платформы Tuna — <strong>Приложения</strong>. Это защищённый reverse proxy, который закрывает любой ваш веб-сервис авторизацией, SSO и гранулярным контролем доступа — без единой строчки изменений в самом сервисе.</p>
<p><a class="" href="https://tuna.am/en/docs/apps/">Перейти к разделу Приложения в документации</a></p>
<img src="https://tuna.am/docs/img/apps/main.png" alt="Главная страница приложений">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="зачем-это-нужно">Зачем это нужно?<a href="https://tuna.am/en/blog/apps/#%D0%B7%D0%B0%D1%87%D0%B5%D0%BC-%D1%8D%D1%82%D0%BE-%D0%BD%D1%83%D0%B6%D0%BD%D0%BE" class="hash-link" aria-label="Direct link to Зачем это нужно?" title="Direct link to Зачем это нужно?" translate="no">​</a></h2>
<p>Представьте: у вас есть внутренний сервис — админка, staging-окружение, Grafana, внутренний API. Вы хотите дать к нему доступ только нужным людям, из нужных стран, с подтверждением через корпоративный SSO. Раньше это означало возню с nginx, oauth2-proxy, сертификатами и списками доступа.</p>
<p>С <strong>Приложениями</strong> Tuna проверяет каждый входящий запрос: кто пользователь, как он аутентифицировался, откуда пришёл и имеет ли право видеть запрашиваемый путь. Всё это настраивается через веб-интерфейс за пару минут.</p>
<p>Что можно сделать:</p>
<ul>
<li class="">закрыть любой веб-сервис авторизацией без изменений в коде;</li>
<li class="">гранулярно разграничить доступ — например, <code>/admin/*</code> только для администраторов из России, а <code>/api/health</code> открыть без аутентификации;</li>
<li class="">подключить корпоративный SSO (Google, Yandex, GitHub, GitLab, VK, любой OIDC-совместимый провайдер);</li>
<li class="">требовать MFA или ручное одобрение администратора для чувствительных операций;</li>
<li class="">опубликовать сервис без публичного IP через туннель — достаточно одной команды;</li>
<li class="">выдать машинный доступ через сервисные токены для CI/CD, мониторинга и автоматизации.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="два-режима-доставки-трафика">Два режима доставки трафика<a href="https://tuna.am/en/blog/apps/#%D0%B4%D0%B2%D0%B0-%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%D0%B0-%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B8-%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0" class="hash-link" aria-label="Direct link to Два режима доставки трафика" title="Direct link to Два режима доставки трафика" translate="no">​</a></h2>
<p>При создании приложения вы выбираете, как Tuna будет доходить до вашего сервиса.</p>
<table><thead><tr><th>Режим</th><th>Когда использовать</th></tr></thead><tbody><tr><td><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" style="margin-right:6px" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="6" cy="19" r="3"></circle><path d="M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15"></path><circle cx="18" cy="5" r="3"></circle></svg> <strong>Прокси</strong></td><td>Сервис уже доступен по сети — в Kubernetes, облачной VM или той же сети, что и нода. Можно указать несколько upstream с балансировкой по весам</td></tr><tr><td><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" style="margin-right:6px" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path></svg> <strong>Туннель</strong></td><td>Сервис без публичного IP — за NAT, на dev-машине или в корпоративной сети. Бэкенд сам подключается к Tuna через клиент-агент</td></tr></tbody></table>
<p>В режиме туннеля после создания приложения вы получаете готовую команду:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna app </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">имя</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--url</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">http://127.0.0.1:8080</span><br></div></code></pre></div></div>
<p>Запустите её на машине с сервисом — и приложение станет доступно через защищённый домен.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="политики-доступа--сердце-системы">Политики доступа — сердце системы<a href="https://tuna.am/en/blog/apps/#%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B8-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0--%D1%81%D0%B5%D1%80%D0%B4%D1%86%D0%B5-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B" class="hash-link" aria-label="Direct link to Политики доступа — сердце системы" title="Direct link to Политики доступа — сердце системы" translate="no">​</a></h2>
<p>Каждый запрос проходит через цепочку <strong>политик</strong>. Первая политика, чей шаблон пути совпал, определяет судьбу запроса: пропустить, потребовать MFA, запросить одобрение или отказать. По умолчанию доступ запрещён.</p>
<img src="https://tuna.am/docs/img/apps/policies_list.png" alt="Список политик приложения">
<p>Каждая политика — это <strong>паттерн пути</strong> (glob-шаблон вроде <code>/admin/*</code>) и <strong>действие</strong>:</p>
<ul>
<li class=""><strong>Разрешить</strong> — доступ при прохождении правил;</li>
<li class=""><strong>Требовать MFA</strong> — то же плюс второй фактор (TOTP или код на email);</li>
<li class=""><strong>Запретить</strong> — безусловная блокировка;</li>
<li class=""><strong>Пропустить</strong> — путь без аутентификации (health check, webhook-эндпоинты).</li>
</ul>
<p>Внутри политики настраиваются <strong>правила</strong> — <em>кто именно</em> получит доступ. Их можно комбинировать по режимам OR / AND / NOT и собирать из разных типов:</p>
<table><thead><tr><th>Тип правила</th><th>Пример</th></tr></thead><tbody><tr><td>Команда / Email / Email RegExp</td><td><code>.*@company\.com$</code></td></tr><tr><td>IP / CIDR</td><td><code>10.0.0.0/8</code></td></tr><tr><td>Страна (GeoIP)</td><td><code>RU</code>, <code>US</code>, <code>DE</code></td></tr><tr><td>Способ входа</td><td><code>oidc</code>, <code>otp</code>, <code>mfa</code></td></tr><tr><td>Провайдер</td><td><code>google</code></td></tr><tr><td>Service Token</td><td>машинная аутентификация</td></tr></tbody></table>
<p>Например, чтобы открыть <code>/admin/*</code> только участникам команды и только из России, достаточно одной политики с правилами «Команда» (or) и «Страна: RU» (and).</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="тестирование-без-риска">Тестирование без риска<a href="https://tuna.am/en/blog/apps/#%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B1%D0%B5%D0%B7-%D1%80%D0%B8%D1%81%D0%BA%D0%B0" class="hash-link" aria-label="Direct link to Тестирование без риска" title="Direct link to Тестирование без риска" translate="no">​</a></h3>
<p>Прежде чем применять конфигурацию, её можно проверить инструментом <strong>Тест политик</strong> — смоделировать запрос с любыми параметрами и увидеть, какое решение примет система. Без создания реальных сессий.</p>
<img src="https://tuna.am/docs/img/apps/policy_test.png" alt="Тестирование политик">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="вход-через-корпоративный-sso">Вход через корпоративный SSO<a href="https://tuna.am/en/blog/apps/#%D0%B2%D1%85%D0%BE%D0%B4-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-%D0%BA%D0%BE%D1%80%D0%BF%D0%BE%D1%80%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9-sso" class="hash-link" aria-label="Direct link to Вход через корпоративный SSO" title="Direct link to Вход через корпоративный SSO" translate="no">​</a></h2>
<p>Способы входа комбинируются — пользователь увидит их все на странице входа:</p>
<ul>
<li class=""><strong>Email OTP</strong> — одноразовый код на email, удобно для внешних подрядчиков;</li>
<li class=""><strong>Аккаунты tuna.am</strong> — вход через личный аккаунт;</li>
<li class=""><strong>Провайдеры команды</strong> — внешние Identity Provider (Google, Yandex, GitHub, GitLab, VK, любой OIDC).</li>
</ul>
<img src="https://tuna.am/docs/img/apps/auth_page_providers.png" alt="Страница входа с провайдерами" style="width:40%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ещё-больше-контроля">Ещё больше контроля<a href="https://tuna.am/en/blog/apps/#%D0%B5%D1%89%D1%91-%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B5-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D1%8F" class="hash-link" aria-label="Direct link to Ещё больше контроля" title="Direct link to Ещё больше контроля" translate="no">​</a></h2>
<p><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" style="margin-right:6px" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><rect width="8" height="4" x="8" y="2" rx="1" ry="1"></rect><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><path d="m9 14 2 2 4-4"></path></svg> <strong>Запросы доступа</strong> — для чувствительных ресурсов включите ручное одобрение. Пользователь объяснит причину, администратор одобрит доступ на нужный срок (от 15 минут до бессрочного).</p>
<p><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" style="margin-right:6px" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M12 8V4H8"></path><rect width="16" height="12" x="4" y="8" rx="2"></rect><path d="M2 14h2"></path><path d="M20 14h2"></path><path d="M15 13v2"></path><path d="M9 13v2"></path></svg> <strong>Сервисные токены</strong> — машинная аутентификация для CI/CD, мониторинга и скриптов. Пара Client ID + Client Secret, передаётся в заголовках. Поддерживается ротация с grace-периодом — обновляйте секрет без простоя.</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Tuna-Access-Client-Id: sat_...'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token parameter variable" style="color:#36acaa">-H</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Tuna-Access-Client-Secret: ...'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">     https://your-app.example.com/</span><br></div></code></pre></div></div>
<p><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" style="margin-right:6px" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M22 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path></svg> <strong>Сессии</strong> — пользователи видят свои активные сессии, администраторы — сессии всей команды с полной информацией (IP, страна, User-Agent, последняя активность). Любую сессию можно отозвать, а кнопка «Закрыть все сессии» завершает их разом.</p>
<p><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" style="margin-right:6px" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z"></path><circle cx="16.5" cy="7.5" r=".5" fill="currentColor"></circle></svg> <strong>Гибкие настройки прокси</strong> — заголовки запроса и ответа, переписывание путей, CORS, лимит размера тела, TLS до upstream и клиентский сертификат (mTLS).</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="полный-аудит">Полный аудит<a href="https://tuna.am/en/blog/apps/#%D0%BF%D0%BE%D0%BB%D0%BD%D1%8B%D0%B9-%D0%B0%D1%83%D0%B4%D0%B8%D1%82" class="hash-link" aria-label="Direct link to Полный аудит" title="Direct link to Полный аудит" translate="no">​</a></h2>
<p>Все действия с приложениями записываются в <a href="https://my.tuna.am/team_audit_events" target="_blank" rel="noopener noreferrer" class="">аудит-лог</a>: создание и изменение приложений, входы пользователей, одобрения и отклонения запросов доступа, отзыв сессий. Каждое событие содержит детали — кто, когда, откуда и что именно произошло.</p>
<img src="https://tuna.am/docs/img/apps/audit_events.png" alt="Аудит-лог событий приложений">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="попробуйте-прямо-сейчас">Попробуйте прямо сейчас<a href="https://tuna.am/en/blog/apps/#%D0%BF%D0%BE%D0%BF%D1%80%D0%BE%D0%B1%D1%83%D0%B9%D1%82%D0%B5-%D0%BF%D1%80%D1%8F%D0%BC%D0%BE-%D1%81%D0%B5%D0%B9%D1%87%D0%B0%D1%81" class="hash-link" aria-label="Direct link to Попробуйте прямо сейчас" title="Direct link to Попробуйте прямо сейчас" translate="no">​</a></h2>
<p>Перейдите в раздел <a href="https://my.tuna.am/team_apps" target="_blank" rel="noopener noreferrer" class="">Приложения</a>, нажмите <strong>+ Добавить приложение</strong> — и закройте свой первый сервис авторизацией за пару минут.</p>
<p>Подробное описание всех возможностей — в <a class="" href="https://tuna.am/en/docs/apps/">документации</a>:</p>
<ul>
<li class=""><a class="" href="https://tuna.am/en/docs/apps/policies/">Политики доступа</a></li>
<li class=""><a class="" href="https://tuna.am/en/docs/apps/access_requests/">Запросы доступа</a></li>
<li class=""><a class="" href="https://tuna.am/en/docs/apps/service_tokens/">Сервисные токены</a></li>
<li class=""><a class="" href="https://tuna.am/en/docs/apps/sessions/">Сессии</a></li>
<li class=""><a class="" href="https://tuna.am/en/docs/apps/settings/">Настройки приложения</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/apps/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/apps/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>release</category>
            <category>tuna</category>
            <category>cli</category>
        </item>
        <item>
            <title><![CDATA[Не приходят webhooks от api.telegram.org в туннель в RU зоне]]></title>
            <link>https://tuna.am/en/blog/tunnel-location/</link>
            <guid>https://tuna.am/en/blog/tunnel-location/</guid>
            <pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Устранение проблем в работе с telegram ботами]]></description>
            <content:encoded><![CDATA[<p>В последнее время многие пользователи сообщают об одной и той же проблеме: webhooks от <code>api.telegram.org</code> перестали приходить в туннели в регионе RU. В этом посте — как быстро обойти проблему, переключив туннель в другой регион.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="проблема">Проблема<a href="https://tuna.am/en/blog/tunnel-location/#%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0" class="hash-link" aria-label="Direct link to Проблема" title="Direct link to Проблема" translate="no">​</a></h2>
<p>Симптомы следующие:</p>
<ul>
<li class="">бот, зарегистрированный через <code>setWebhook</code>, перестал получать обновления;</li>
<li class="">запросы от <code>api.telegram.org</code> не доходят до туннеля в регионе RU — их не видно ни в логах клиента, ни в <a href="https://my.tuna.am/tunnels" target="_blank" rel="noopener noreferrer" class="">инспекторе</a>;</li>
<li class="">при этом туннель работает: запросы из браузера и от других сервисов проходят штатно.</li>
</ul>
<p>Со стороны нашего сервиса и хостинг-провайдера в России никаких ограничений нет — туннель работает штатно, мы видим установленное соединение. Проблема где-то в магистрали между инфраструктурой Telegram и нашими RU-нодами; вероятнее всего, это ограничение со стороны РКН. Повлиять на это с нашей стороны мы не можем, но регион подключения у туннеля — это параметр клиента, и сменить его — дело пары секунд.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="решение--сменить-регион-туннеля">Решение — сменить регион туннеля<a href="https://tuna.am/en/blog/tunnel-location/#%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5--%D1%81%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C-%D1%80%D0%B5%D0%B3%D0%B8%D0%BE%D0%BD-%D1%82%D1%83%D0%BD%D0%BD%D0%B5%D0%BB%D1%8F" class="hash-link" aria-label="Direct link to Решение — сменить регион туннеля" title="Direct link to Решение — сменить регион туннеля" translate="no">​</a></h2>
<p>Самый быстрый способ — поднять туннель в другом регионе, например <code>nl</code> (Нидерланды).
Полный список доступных регионов и все способы переопределения — в <a class="" href="https://tuna.am/en/docs/tunnels/guides/locations/">документации</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="tuna-desktop">Tuna Desktop<a href="https://tuna.am/en/blog/tunnel-location/#tuna-desktop" class="hash-link" aria-label="Direct link to Tuna Desktop" title="Direct link to Tuna Desktop" translate="no">​</a></h3>
<p>При создании туннеля выберите регион в выпадающем списке <strong>Регион</strong>:</p>
<p><img decoding="async" loading="lazy" alt="Выбор региона в Tuna Desktop" src="https://tuna.am/en/assets/images/td-0c10e1fdb48b465987307614651ad7fd.png" width="898" height="926" class="img_ev3q"></p>
<p>После сохранения туннель поднимется в выбранном регионе — webhooks от Telegram начнут приходить.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="командная-строка">Командная строка<a href="https://tuna.am/en/blog/tunnel-location/#%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%B0%D1%8F-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0" class="hash-link" aria-label="Direct link to Командная строка" title="Direct link to Командная строка" translate="no">​</a></h3>
<p>Передайте регион аргументом <code>--location</code> (или коротким <code>-l</code>):</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna http </span><span class="token number" style="color:#36acaa">8080</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--location</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">nl</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">tuna http </span><span class="token number" style="color:#36acaa">8080</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">-l</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">nl</span><br></div></code></pre></div></div>
<p>Чтобы не указывать флаг каждый раз, регион можно задать по умолчанию одним из трёх способов.</p>
<p><strong>Команда <code>tuna config save-location</code></strong> — сохранит значение в <a class="" href="https://tuna.am/en/docs/guides/config-file/">конфигурационный файл</a>:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna config save-location </span><span class="token function" style="color:#d73a49">nl</span><br></div></code></pre></div></div>
<p><strong>Параметр в <a class="" href="https://tuna.am/en/docs/guides/config-file/">конфигурационном файле</a></strong> напрямую:</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">location</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> nl</span><br></div></code></pre></div></div>
<p><strong><a class="" href="https://tuna.am/en/docs/guides/environment-variables/">Переменная окружения</a></strong> <code>TUNA_LOCATION</code>:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token assign-left variable" style="color:#36acaa">TUNA_LOCATION</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">nl</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="что-дальше">Что дальше<a href="https://tuna.am/en/blog/tunnel-location/#%D1%87%D1%82%D0%BE-%D0%B4%D0%B0%D0%BB%D1%8C%D1%88%D0%B5" class="hash-link" aria-label="Direct link to Что дальше" title="Direct link to Что дальше" translate="no">​</a></h2>
<p>После смены региона у туннеля изменится URL — не забудьте обновить адрес webhook'а в настройках вашего Telegram-бота (метод <a href="https://core.telegram.org/bots/api#setwebhook" target="_blank" rel="noopener noreferrer" class=""><code>setWebhook</code></a> с новым URL).</p>
<p>Если и после этого webhooks не приходят — напишите нам в <a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram-сообщество</a> или на <a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">info@tuna.am</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/tunnel-location/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/tunnel-location/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>guides</category>
        </item>
        <item>
            <title><![CDATA[🆕 Boards, Meets and other platform updates]]></title>
            <link>https://tuna.am/en/blog/boards-meets/</link>
            <guid>https://tuna.am/en/blog/boards-meets/</guid>
            <pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[New services - Boards and Meets, integrations with task trackers and improvements in tuna-cli]]></description>
            <content:encoded><![CDATA[<p>This is a big release! We've added two new major services - Boards and Meets, new features in Monitors and Reports, improved the request inspector, and made improvements to sshd tunnels.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="boards">Boards<a href="https://tuna.am/en/blog/boards-meets/#boards" class="hash-link" aria-label="Direct link to Boards" title="Direct link to Boards" translate="no">​</a></h2>
<p>The headliner of the release!</p>
<a href="https://my.tuna.am/boards" target="_blank" rel="noopener noreferrer"><img src="https://tuna.am/blog/img/2026-03-24/boards.png" alt="Boards"></a>
<p>Like many of our tools, <a href="https://my.tuna.am/boards" target="_blank" rel="noopener noreferrer" class="">Tuna Boards</a> grew out of an internal tool.
Its first versions were extremely primitive and simple, but for us that was always enough.</p>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Here's what the project looked like historically ...</summary><div><div class="collapsibleContent_i85q"><div class="swiper"><div class="swiper-wrapper"><div class="swiper-slide"><img src="https://tuna.am/blog/img/2026-03-24/boards_history_1.png" alt="Plato history 1"></div><div class="swiper-slide"><img src="https://tuna.am/blog/img/2026-03-24/boards_history_2.png" alt="Plato history 2"></div><div class="swiper-slide"><img src="https://tuna.am/blog/img/2026-03-24/boards_history_3.png" alt="Plato history 3"></div></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div><div class="swiper-pagination"></div></div></div></div></details>
<p>That's why we never used other alternatives like Miro and always tried to use our own internal product. If you've noticed, any diagrams and signature drawings are made exactly in this tool.</p>
<p>Today we're pleased to introduce <strong>Boards</strong> as part of our developer platform.
Here you can sketch out an infrastructure diagram, plan new features, design new UX and UI, and also use the built-in voice chat, timer and other features.</p>
<div style="width:640px;height:360px"></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="meets">Meets<a href="https://tuna.am/en/blog/boards-meets/#meets" class="hash-link" aria-label="Direct link to Meets" title="Direct link to Meets" translate="no">​</a></h2>
<p>Video calls have long been an integral part of any online meeting; every self-respecting developer hates these damned calls, but now you can do it on our platform!</p>
<p>Meet <a href="https://my.tuna.am/meet" target="_blank" rel="noopener noreferrer" class="">Tuna Meets</a>.</p>
<a href="https://my.tuna.am/meet" target="_blank" rel="noopener noreferrer"><img src="https://tuna.am/blog/img/2026-03-24/meets.png" alt="Meets"></a>
<p>The functionality is fairly standard: there's a presenter mode, presentations, background blur and so on. The interface is fully adapted for mobile devices, so you can take calls both at your computer and on the go.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="integrations-with-task-trackers">Integrations with task trackers<a href="https://tuna.am/en/blog/boards-meets/#integrations-with-task-trackers" class="hash-link" aria-label="Direct link to Integrations with task trackers" title="Direct link to Integrations with task trackers" translate="no">​</a></h2>
<p>After we launched <a class="" href="https://tuna.am/en/docs/reports/">Reports</a> and <a class="" href="https://tuna.am/en/docs/monitors/">Monitors</a>, it immediately became clear that it would be convenient, for an incident in monitors or for a new report, to be able to create a task in GitLab, Jira or Yandex.Tracker with one click. So we built integrations with the main popular task trackers so you can quickly create tasks in your favorite tracker.</p>
<div class="swiper"><div class="swiper-wrapper"><div class="swiper-slide"><img src="https://tuna.am/blog/img/2026-03-24/intagrations_1.png" alt="Integrations 1"></div><div class="swiper-slide"><img src="https://tuna.am/blog/img/2026-03-24/intagrations_2.png" alt="Integrations 2"></div><div class="swiper-slide"><img src="https://tuna.am/blog/img/2026-03-24/intagrations_3.png" alt="Integrations 3"></div></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div><div class="swiper-pagination"></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="filter-in-the-request-inspector">Filter in the request inspector<a href="https://tuna.am/en/blog/boards-meets/#filter-in-the-request-inspector" class="hash-link" aria-label="Direct link to Filter in the request inspector" title="Direct link to Filter in the request inspector" translate="no">​</a></h2>
<p>The request inspector now has a filter bar for requests by many parameters: request type, response status, headers, IP address and much more. To start using it, update to the latest version of <a class="" href="https://tuna.am/en/docs/guides/update/">tuna-cli</a>.</p>
<a href="https://tuna.am/docs/tunnels/http/inspect/" target="_blank" rel="noopener noreferrer"><img src="https://tuna.am/blog/img/2026-03-24/inspector_filter.png" alt="Filters in the request inspector"></a>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="improvements-in-sshd-tunnels">Improvements in SSHd tunnels<a href="https://tuna.am/en/blog/boards-meets/#improvements-in-sshd-tunnels" class="hash-link" aria-label="Direct link to Improvements in SSHd tunnels" title="Direct link to Improvements in SSHd tunnels" translate="no">​</a></h2>
<p>We're not forgetting to develop <a class="" href="https://tuna.am/en/docs/tunnels/ssh/">tunnels</a> either.</p>
<ol>
<li class="">Added support for <strong>Windows 11+</strong>, the user gets a PWSH terminal.</li>
<li class="">Auto-detection of <em>$HOME</em>, <em>$SHELL</em> and the profile settings of the user under whom the SSHd tunnel is launched.</li>
<li class="">Switched to the asciinema format in ssh-sessions. So sessions now record everything, including work in text editors, launching TUI utilities, etc. Recordings can be watched in the terminal, embedded on a website with a standard player, or converted to GIF using the <code>tuna ssh-session export</code> command.</li>
</ol>
<div class="theme-tabs-container tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">Asciinema player</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">GIF</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div id="cast-/blog/img/2026-03-24/ssh_session_asciinema.cast" class="asciinema-player"></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><img src="https://tuna.am/blog/img/2026-03-24/ssh_session_asciinema.gif" alt="ssh_session_asciinema"></div></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/boards-meets/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/boards-meets/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>customer-portal</category>
        </item>
        <item>
            <title><![CDATA[New plan names]]></title>
            <link>https://tuna.am/en/blog/tariff-rename/</link>
            <guid>https://tuna.am/en/blog/tariff-rename/</guid>
            <pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[We renamed the subscription plans — Hobby became Starter, Developer became Pro, and Team became Legend]]></description>
            <content:encoded><![CDATA[<p>We've updated the names of our subscription plans. Functionality and pricing remain the same — only the names have changed.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-changed">What's changed?<a href="https://tuna.am/en/blog/tariff-rename/#whats-changed" class="hash-link" aria-label="Direct link to What's changed?" title="Direct link to What's changed?" translate="no">​</a></h2>
<table><thead><tr><th>Before</th><th>After</th></tr></thead><tbody><tr><td>Hobby</td><td><strong>Starter</strong></td></tr><tr><td>Developer</td><td><strong>Pro</strong></td></tr><tr><td>Team</td><td><strong>Legend</strong></td></tr></tbody></table>
<p>The new names better reflect the level of capabilities of each plan and the user's growth path on the platform.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-did-we-rename">Why did we rename?<a href="https://tuna.am/en/blog/tariff-rename/#why-did-we-rename" class="hash-link" aria-label="Direct link to Why did we rename?" title="Direct link to Why did we rename?" translate="no">​</a></h2>
<p>The old name <strong>Team</strong> was misleading users — many thought the plan was intended exclusively for team use. In reality there are no such restrictions, and this plan can be used solo, getting expanded limits and all the platform's features. The new name <strong>Legend</strong> removes this misunderstanding.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="switching-from-pro-to-legend">Switching from Pro to Legend<a href="https://tuna.am/en/blog/tariff-rename/#switching-from-pro-to-legend" class="hash-link" aria-label="Direct link to Switching from Pro to Legend" title="Direct link to Switching from Pro to Legend" translate="no">​</a></h2>
<p>Previously, to switch to the <strong>Legend</strong> plan you had to create a separate <a class="" href="https://tuna.am/en/docs/team/">team</a> — now this is no longer required. You can switch from <strong>Pro</strong> to <strong>Legend</strong> directly from your <a href="https://my.tuna.am/subscription" target="_blank" rel="noopener noreferrer" class="">dashboard</a> without any additional steps, keeping all your resources and settings.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-stays-the-same">What stays the same?<a href="https://tuna.am/en/blog/tariff-rename/#what-stays-the-same" class="hash-link" aria-label="Direct link to What stays the same?" title="Direct link to What stays the same?" translate="no">​</a></h2>
<ul>
<li class="">Subscription pricing</li>
<li class="">Limits and features of each plan</li>
<li class="">Additional licenses</li>
<li class="">All active subscriptions continue to work</li>
</ul>
<p>If you have any questions — <a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">get in touch</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/tariff-rename/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/tariff-rename/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>customer-portal</category>
        </item>
        <item>
            <title><![CDATA[PROXY Protocol support in TCP tunnels]]></title>
            <link>https://tuna.am/en/blog/release-v0-30-0/</link>
            <guid>https://tuna.am/en/blog/release-v0-30-0/</guid>
            <pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The tuna console client now supports PROXY Protocol for TCP tunnels — pass the original client IP and port to your application.]]></description>
            <content:encoded><![CDATA[<p>The <a class="" href="https://tuna.am/en/docs/guides/install/install-cli/">console client</a> <strong>tuna</strong> has added support for <a href="https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt" target="_blank" rel="noopener noreferrer" class="">PROXY Protocol</a> for TCP tunnels. Now you can pass the original client IP address and port directly to your application.</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">$ tuna tcp </span><span class="token number" style="color:#36acaa">54321</span><span class="token plain"> --proxy-protocol</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">2</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">INFO</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">22</span><span class="token plain">:08:58</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> Welcome to Tuna</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">INFO</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">22</span><span class="token plain">:09:00</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> Forwarding tcp://ru.tuna.am:22347 -</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">127.0</span><span class="token plain">.0.1:54321</span><br></div></code></pre></div></div>
<p><a class="" href="https://tuna.am/en/docs/tunnels/tcp/#proxy-protocol">Go to documentation</a></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-do-you-need-proxy-protocol">Why do you need PROXY Protocol?<a href="https://tuna.am/en/blog/release-v0-30-0/#why-do-you-need-proxy-protocol" class="hash-link" aria-label="Direct link to Why do you need PROXY Protocol?" title="Direct link to Why do you need PROXY Protocol?" translate="no">​</a></h2>
<p>When using tunnels, your application sees connections from the tunnel server rather than from the real client. PROXY Protocol solves this problem — it passes the original client IP and port in the connection header, which allows you to:</p>
<ul>
<li class="">Keep correct connection logs with real IP addresses</li>
<li class="">Apply access control rules at the application level</li>
<li class="">Collect accurate analytics on user geography</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-flag">New flag<a href="https://tuna.am/en/blog/release-v0-30-0/#new-flag" class="hash-link" aria-label="Direct link to New flag" title="Direct link to New flag" translate="no">​</a></h2>
<p>The <code>tuna tcp</code> command has a new <code>--proxy-protocol</code> flag that accepts the protocol version:</p>
<table><thead><tr><th>Value</th><th>Format</th><th>Description</th></tr></thead><tbody><tr><td><code>1</code></td><td>Text</td><td>Human-readable format, easy to debug</td></tr><tr><td><code>2</code></td><td>Binary</td><td>More efficient, recommended for production</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="usage-examples">Usage examples<a href="https://tuna.am/en/blog/release-v0-30-0/#usage-examples" class="hash-link" aria-label="Direct link to Usage examples" title="Direct link to Usage examples" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="basic-example">Basic example<a href="https://tuna.am/en/blog/release-v0-30-0/#basic-example" class="hash-link" aria-label="Direct link to Basic example" title="Direct link to Basic example" translate="no">​</a></h3>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna tcp </span><span class="token number" style="color:#36acaa">8443</span><span class="token plain"> --proxy-protocol</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># or with an environment variable</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">TUNA_PROXY_PROTOCOL</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> tuna tcp </span><span class="token number" style="color:#36acaa">8443</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="minecraft-server">Minecraft server<a href="https://tuna.am/en/blog/release-v0-30-0/#minecraft-server" class="hash-link" aria-label="Direct link to Minecraft server" title="Direct link to Minecraft server" translate="no">​</a></h3>
<p>Some game server builds, for example <a href="https://docs.papermc.io/velocity/configuration/#advanced-section" target="_blank" rel="noopener noreferrer" class="">Velocity</a>, support PROXY Protocol. Enable it in the game config and in the tuna client:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna tcp </span><span class="token number" style="color:#36acaa">45678</span><span class="token plain"> --proxy-protocol</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">2</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="compatibility">Compatibility<a href="https://tuna.am/en/blog/release-v0-30-0/#compatibility" class="hash-link" aria-label="Direct link to Compatibility" title="Direct link to Compatibility" translate="no">​</a></h2>
<p>PROXY Protocol is widely supported by popular server software:</p>
<ul>
<li class=""><strong>Haproxy</strong> — supports both versions, detects automatically</li>
<li class=""><strong>Nginx</strong> — supports both versions, detects automatically</li>
<li class=""><strong>Envoy</strong> — supports both versions</li>
<li class="">Many databases and applications via a proxy layer</li>
</ul>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>If you're not sure which version to choose — use version <code>2</code>. The binary format is more efficient and is the recommended option in most cases.</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="updating">Updating<a href="https://tuna.am/en/blog/release-v0-30-0/#updating" class="hash-link" aria-label="Direct link to Updating" title="Direct link to Updating" translate="no">​</a></h2>
<p>To update, follow the <a class="" href="https://tuna.am/en/docs/guides/update/">instructions</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/release-v0-30-0/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/release-v0-30-0/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>release</category>
            <category>tuna</category>
            <category>cli</category>
        </item>
        <item>
            <title><![CDATA[🆕 Monitors - new functionality]]></title>
            <link>https://tuna.am/en/blog/monitors/</link>
            <guid>https://tuna.am/en/blog/monitors/</guid>
            <pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A service for monitoring jobs and remote resources]]></description>
            <content:encoded><![CDATA[<p>We're pleased to introduce a new component of the Tuna platform - <strong>Monitors</strong>. Functionality for tracking the health of your services, tunnels, jobs and infrastructure with notifications through various communication channels.</p>
<p><a class="" href="https://tuna.am/en/docs/monitors/">Go to Monitors section in documentation</a></p>
<img src="https://tuna.am/docs/img/monitors/main.png" alt="Monitors main page">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-are-tuna-monitors">What are Tuna Monitors?<a href="https://tuna.am/en/blog/monitors/#what-are-tuna-monitors" class="hash-link" aria-label="Direct link to What are Tuna Monitors?" title="Direct link to What are Tuna Monitors?" translate="no">​</a></h2>
<p>Monitors let you control the operation of your cron jobs, services and infrastructure. If a problem occurs, you'll get an immediate notification through the configured communication channels — email, Telegram, Slack and others.</p>
<p><strong>Monitors</strong> are:</p>
<ul>
<li class="">Tracking of periodic jobs (backup scripts, cron jobs)</li>
<li class="">Availability checks for websites, APIs and tunnels from multiple regions</li>
<li class="">Network infrastructure monitoring (TCP, DNS, ICMP)</li>
<li class="">Automatic notifications on failures and recoveries</li>
<li class="">Integration with the tuna CLI for convenient work from the terminal</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="who-is-it-for">Who is it for?<a href="https://tuna.am/en/blog/monitors/#who-is-it-for" class="hash-link" aria-label="Direct link to Who is it for?" title="Direct link to Who is it for?" translate="no">​</a></h2>
<ol>
<li class=""><strong>DevOps engineers</strong> — for monitoring infrastructure and automated jobs</li>
<li class=""><strong>Developers</strong> — for tracking the availability of APIs and services</li>
<li class=""><strong>System administrators</strong> — for controlling the execution of backup scripts and cron jobs</li>
<li class=""><strong>Teams</strong> — for centralized monitoring of all services with shared notifications</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="6-monitor-types">6 monitor types<a href="https://tuna.am/en/blog/monitors/#6-monitor-types" class="hash-link" aria-label="Direct link to 6 monitor types" title="Direct link to 6 monitor types" translate="no">​</a></h2>
<p>Tuna supports 6 monitor types, divided into two categories:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="user-monitors">User monitors<a href="https://tuna.am/en/blog/monitors/#user-monitors" class="hash-link" aria-label="Direct link to User monitors" title="Direct link to User monitors" translate="no">​</a></h3>
<p>These monitors wait for signals from your applications and scripts:</p>
<table><thead><tr><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" style="margin-right:6px" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"></path><path d="M3 3v5h5"></path><path d="M12 7v5l4 2"></path></svg> <strong>Job</strong></td><td>Monitoring the execution of periodic jobs on a schedule</td></tr><tr><td><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" style="margin-right:6px" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z"></path><path d="M3.22 12H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27"></path></svg> <strong>Heartbeat</strong></td><td>Monitoring regular signals from services in closed networks</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="external-monitors">External monitors<a href="https://tuna.am/en/blog/monitors/#external-monitors" class="hash-link" aria-label="Direct link to External monitors" title="Direct link to External monitors" translate="no">​</a></h3>
<p>These monitors independently check the availability of your resources from multiple geographic regions:</p>
<table><thead><tr><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" style="margin-right:6px" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><rect width="20" height="14" x="2" y="3" rx="2"></rect><line x1="8" x2="16" y1="21" y2="21"></line><line x1="12" x2="12" y1="17" y2="21"></line></svg> <strong>HTTP</strong></td><td>Availability checks for websites and APIs with response validation</td></tr><tr><td><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" style="margin-right:6px" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M17 21v-2a1 1 0 0 1-1-1v-1a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v1a1 1 0 0 1-1 1"></path><path d="M19 15V6.5a1 1 0 0 0-7 0v11a1 1 0 0 1-7 0V9"></path><path d="M21 21v-2h-4"></path><path d="M3 5h4V3"></path><path d="M7 5a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a1 1 0 0 1 1-1V3"></path></svg> <strong>TCP</strong></td><td>Availability checks for TCP services (databases, mail)</td></tr><tr><td><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" style="margin-right:6px" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg> <strong>DNS</strong></td><td>Checking DNS records and their correctness</td></tr><tr><td><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" style="margin-right:6px" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"></path></svg> <strong>ICMP</strong></td><td>Network availability checks (ping)</td></tr></tbody></table>
<p>HTTP and TCP monitors are integrated with Tunnels. If you have active tunnels or reserved domains/ports, when creating a monitor the resource you need will be in the menu to the right of the address.</p>
<img src="https://tuna.am/docs/img/monitors/http_tunnel.png" alt="Monitors main page">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-features">Key features<a href="https://tuna.am/en/blog/monitors/#key-features" class="hash-link" aria-label="Direct link to Key features" title="Direct link to Key features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cron-job-monitoring">Cron job monitoring<a href="https://tuna.am/en/blog/monitors/#cron-job-monitoring" class="hash-link" aria-label="Direct link to Cron job monitoring" title="Direct link to Cron job monitoring" translate="no">​</a></h3>
<p>Track the execution of backup scripts, syncs and other periodic operations:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Simple backup with monitoring</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">tuna monitor </span><span class="token builtin class-name">exec</span><span class="token plain"> MONITOR_ID -- pg_dump </span><span class="token parameter variable" style="color:#36acaa">-U</span><span class="token plain"> postgres mydb </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> /backups/dump.sql</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># In crontab</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> * * * tuna monitor </span><span class="token builtin class-name">exec</span><span class="token plain"> MONITOR_ID -- /scripts/backup.sh</span><br></div></code></pre></div></div>
<p>The system automatically sends <code>start</code>, <code>finish</code> or <code>fail</code> signals, and also captures execution logs.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="heartbeat-monitoring">Heartbeat monitoring<a href="https://tuna.am/en/blog/monitors/#heartbeat-monitoring" class="hash-link" aria-label="Direct link to Heartbeat monitoring" title="Direct link to Heartbeat monitoring" translate="no">​</a></h3>
<p>For services in closed networks, IoT devices and background processes:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Sending a heartbeat every 5 minutes</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">*/5 * * * * tuna monitor </span><span class="token function" style="color:#d73a49">ping</span><span class="token plain"> MONITOR_ID </span><span class="token parameter variable" style="color:#36acaa">--host</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">my-server</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="checks-from-multiple-regions">Checks from multiple regions<a href="https://tuna.am/en/blog/monitors/#checks-from-multiple-regions" class="hash-link" aria-label="Direct link to Checks from multiple regions" title="Direct link to Checks from multiple regions" translate="no">​</a></h3>
<p>External monitors check the availability of your resources from different geographic locations, which makes it possible to detect routing issues or regional unavailability.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ssltls-and-whois-monitoring">SSL/TLS and Whois monitoring<a href="https://tuna.am/en/blog/monitors/#ssltls-and-whois-monitoring" class="hash-link" aria-label="Direct link to SSL/TLS and Whois monitoring" title="Direct link to SSL/TLS and Whois monitoring" translate="no">​</a></h3>
<p>HTTP monitors automatically check SSL certificates and track the domain expiration date so you don't miss the renewal moment.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="integration-with-notifications">Integration with notifications<a href="https://tuna.am/en/blog/monitors/#integration-with-notifications" class="hash-link" aria-label="Direct link to Integration with notifications" title="Direct link to Integration with notifications" translate="no">​</a></h3>
<p>Monitors are integrated with the <a class="" href="https://tuna.am/en/docs/team/contacts/">Contacts</a> and <a class="" href="https://tuna.am/en/docs/team/integrations/">Integrations</a> systems. Set up notifications via Telegram, Slack, email or webhook.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli-integration">CLI integration<a href="https://tuna.am/en/blog/monitors/#cli-integration" class="hash-link" aria-label="Direct link to CLI integration" title="Direct link to CLI integration" translate="no">​</a></h2>
<p>The <strong>tuna</strong> console client is fully <a class="" href="https://tuna.am/en/docs/monitors/cli/">integrated</a> with monitors:</p>
<ul>
<li class=""><code>tuna monitor ping</code> — sending a Heartbeat signal to a monitor</li>
<li class=""><code>tuna monitor exec</code> — executing a command with automatic tracking</li>
<li class=""><code>tuna monitor status</code> — viewing monitor statuses</li>
</ul>
<p>Detailed information about each monitor type, settings and usage examples is available in the <a class="" href="https://tuna.am/en/docs/monitors/">documentation</a>.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="notifications-and-integrations">Notifications and integrations<a href="https://tuna.am/en/blog/monitors/#notifications-and-integrations" class="hash-link" aria-label="Direct link to Notifications and integrations" title="Direct link to Notifications and integrations" translate="no">​</a></h2>
<p>Notifications and integrations are also a big part of the new functionality, which is integrated not only with <a class="" href="https://tuna.am/en/docs/monitors/">monitors</a> but also with <a class="" href="https://tuna.am/en/docs/reports/">reports</a>.</p>
<img src="https://tuna.am/docs/img/team/integrations_2.png" alt="Types of integrations">
<p>Popular communication channels are supported: Telegram, Slack, Discord, VK Teams, Google Chat and custom Webhooks. <a class="" href="https://tuna.am/en/docs/team/contacts/">Contact groups</a> let you flexibly manage recipients — combine email addresses and integrations into named groups, use one group for multiple monitors, and easily add or remove recipients without changing the monitors' settings themselves.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/monitors/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/monitors/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>release</category>
            <category>tuna</category>
            <category>cli</category>
        </item>
        <item>
            <title><![CDATA[🆕 Reports - new functionality]]></title>
            <link>https://tuna.am/en/blog/reports/</link>
            <guid>https://tuna.am/en/blog/reports/</guid>
            <pubDate>Wed, 12 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Error reporting service for your website by Tuna]]></description>
            <content:encoded><![CDATA[<p>We're pleased to introduce a new component of the Tuna platform - <strong>Reports</strong>. Designed for generating error reports on your website.
With an embeddable script, users and QA engineers can easily show where the bug is hiding, and you get debugging information and can immediately start fixing it.</p>
<p><a class="" href="https://tuna.am/en/docs/reports/">Go to Reports section in documentation</a></p>
<img src="https://tuna.am/docs/img/reports/setup.png" style="width:85%;height:auto" alt="Setup">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-does-it-work">How does it work?<a href="https://tuna.am/en/blog/reports/#how-does-it-work" class="hash-link" aria-label="Direct link to How does it work?" title="Direct link to How does it work?" translate="no">​</a></h2>
<ol>
<li class="">
<p>Go to your dashboard and create a project in the <a href="https://my.tuna.am/reports" target="_blank" rel="noopener noreferrer" class="">Reports</a> section.</p>
</li>
<li class="">
<p>Add this code to your website before the closing <code>&lt;head&gt;</code> tag:</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm" style="counter-reset:line-count 0"><div class="token-line codeLine_lJS_" style="color:#393A34"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- tuna. Screen and user actions recording --&gt;</span><span class="token plain"></span></span><br></div><div class="token-line codeLine_lJS_" style="color:#393A34"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token script language-javascript"></span></span><br></div><div class="token-line codeLine_lJS_" style="color:#393A34"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token script language-javascript">    </span><span class="token script language-javascript dom variable" style="color:#36acaa">window</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access">reportOptions</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span></span><br></div><div class="token-line codeLine_lJS_" style="color:#393A34"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token script language-javascript">        </span><span class="token script language-javascript literal-property property" style="color:#36acaa">captureKey</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">"YOUR_CAPTURE_KEY"</span><span class="token script language-javascript"></span></span><br></div><div class="token-line codeLine_lJS_" style="color:#393A34"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token script language-javascript">    </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span></span><br></div><div class="token-line codeLine_lJS_" style="color:#393A34"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token script language-javascript"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span></span><br></div><div class="token-line codeLine_lJS_" style="color:#393A34"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">script</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">src</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">https://reports.tuna.am/latest/index.js</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">async</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token script"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span></span><br></div></code></pre></div></div>
</li>
<li class="">
<p>Call the script with <code>CTRL + ALT + S</code> or <code>⌘ + ⌥ + S</code> and create a report.</p>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-does-a-report-look-like">What does a report look like?<a href="https://tuna.am/en/blog/reports/#what-does-a-report-look-like" class="hash-link" aria-label="Direct link to What does a report look like?" title="Direct link to What does a report look like?" translate="no">​</a></h2>
<p>Inside the report you will find a screenshot or video and all the debugging information from the console, network operations, user actions and a snapshot of the page DOM tree.</p>
<div class="theme-tabs-container tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">Info</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Inspector</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Console</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Network</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Actions</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Comments</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p>The first tab contains general summary information about the client, device and browser.</p><img src="https://tuna.am/docs/img/reports/info.png" style="width:100%;height:auto"></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>A snapshot of the page DOM tree, with the ability to select an element.</p><div style="width:100%;height:auto"></div><hr><div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_BuS1"><p>This tab is only available for reports with a screenshot. Reports with video cannot capture a DOM tree snapshot since it can change over time.</p></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>A list of all events from the browser console.</p><img src="https://tuna.am/docs/img/reports/console.png" style="width:100%;height:auto"></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>A list of all XHR requests with the option to look into the details.</p><div style="width:100%;height:auto"></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>User actions on the page.</p><img src="https://tuna.am/docs/img/reports/actions.png" style="width:100%;height:auto"></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>You can also leave comments and reactions to comments.</p><img src="https://tuna.am/docs/img/reports/message.png" style="width:100%;height:auto"></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="video-overview">Video overview<a href="https://tuna.am/en/blog/reports/#video-overview" class="hash-link" aria-label="Direct link to Video overview" title="Direct link to Video overview" translate="no">​</a></h2>
<div class="theme-tabs-container tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">YouTube</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">VK Video</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div style="width:640px;height:360px"></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><iframe src="https://vkvideo.ru/video_ext.php?oid=-230240053&amp;id=456239024&amp;hd=1&amp;autoplay=0" width="640" height="360" allow="autoplay; encrypted-media; fullscreen; picture-in-picture; screen-wake-lock;" frameborder="0"></iframe></div></div></div>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/reports/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/reports/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[🆕 Webhooks (SMTP, traffic policies, tunnel replay), TOTP in passwords, client distribution improvements]]></title>
            <link>https://tuna.am/en/blog/webhooks-smtp/</link>
            <guid>https://tuna.am/en/blog/webhooks-smtp/</guid>
            <pubDate>Mon, 13 Oct 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[New features in Webhooks, TOTP in passwords, client distribution improvements]]></description>
            <content:encoded><![CDATA[<p>In this update - new features in Webhooks. A small but important update in the Password Manager.
Improvements and enhanced security in client distribution.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="webhooks">Webhooks<a href="https://tuna.am/en/blog/webhooks-smtp/#webhooks" class="hash-link" aria-label="Direct link to Webhooks" title="Direct link to Webhooks" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="traffic-policy">Traffic Policy<a href="https://tuna.am/en/blog/webhooks-smtp/#traffic-policy" class="hash-link" aria-label="Direct link to Traffic Policy" title="Direct link to Traffic Policy" translate="no">​</a></h3>
<p>In addition to a simple response, you can now describe complex webhook processing rules, imitating an API response for example.
It's important to note that this will work even on the free plan, and you can try traffic policies for free.</p>
<img src="https://tuna.am/docs/img/webhooks/reply_tp.png" alt="Screenshot with traffic policy in webhook">
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="resend-request-to-tunnel">Resend request to tunnel<a href="https://tuna.am/en/blog/webhooks-smtp/#resend-request-to-tunnel" class="hash-link" aria-label="Direct link to Resend request to tunnel" title="Direct link to Resend request to tunnel" translate="no">​</a></h3>
<p>If you have running tunnels, you can forward the received request to them.
We thought this could be convenient and useful when debugging something in the early stages.</p>
<img src="https://tuna.am/docs/img/webhooks/resend_to_tunnel.png" alt="Screenshot with request forwarding to tunnel">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="totp-in-password-manager">TOTP in Password Manager<a href="https://tuna.am/en/blog/webhooks-smtp/#totp-in-password-manager" class="hash-link" aria-label="Direct link to TOTP in Password Manager" title="Direct link to TOTP in Password Manager" translate="no">​</a></h2>
<p>Long-awaited TOTP (Time-based one-time) passwords have appeared.
This means that if you have 1 account from a third-party service for the team, now you can safely enable 2FA.</p>
<img src="https://tuna.am/docs/img/passwords/totp.webp" alt="GIF with TOTP">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="client-distribution-improvements">Client distribution improvements<a href="https://tuna.am/en/blog/webhooks-smtp/#client-distribution-improvements" class="hash-link" aria-label="Direct link to Client distribution improvements" title="Direct link to Client distribution improvements" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="security">Security<a href="https://tuna.am/en/blog/webhooks-smtp/#security" class="hash-link" aria-label="Direct link to Security" title="Direct link to Security" translate="no">​</a></h3>
<p>We focus on security, so we recommend checking that you're using our official client builds.
Now all build artifacts, archives, packages, installers, checksum files, and docker images are signed with our digital signature.</p>
<ul>
<li class="">Public <strong>GPG</strong> key for verification is distributed via the link - <a href="https://releases.tuna.am/tuna.asc" target="_blank" rel="noopener noreferrer" class="">https://releases.tuna.am/tuna.asc</a></li>
<li class="">Public <a href="https://docs.sigstore.dev/" target="_blank" rel="noopener noreferrer" class="">Cosign</a> key for Docker images verification - <a href="https://releases.tuna.am/tuna-cosign.asc" target="_blank" rel="noopener noreferrer" class="">https://releases.tuna.am/tuna-cosign.asc</a></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="distribution-for-alt-linux">Distribution for ALT Linux<a href="https://tuna.am/en/blog/webhooks-smtp/#distribution-for-alt-linux" class="hash-link" aria-label="Direct link to Distribution for ALT Linux" title="Direct link to Distribution for ALT Linux" translate="no">​</a></h3>
<p>Added distribution support for the Russian ALT Linux, more details in the <a class="" href="https://tuna.am/en/docs/guides/install/">installation instructions</a>.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/webhooks-smtp/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/webhooks-smtp/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[🛠 Telegram bot for VirusTotal monitoring]]></title>
            <link>https://tuna.am/en/blog/vt-telegram-bot/</link>
            <guid>https://tuna.am/en/blog/vt-telegram-bot/</guid>
            <pubDate>Thu, 11 Sep 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Our toolset for monitoring hosts in VirusTotal]]></description>
            <content:encoded><![CDATA[<p>We're publishing another Open-Source tool that we use ourselves and want to share with everyone.
This time it's a <a href="https://gitlab.com/yuccastream/vt-telegram-bot" target="_blank" rel="noopener noreferrer" class="">Telegram bot for monitoring domains and IP addresses in VirusTotal databases</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="https://tuna.am/en/blog/vt-telegram-bot/#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h2>
<p>Even in the early stages, we faced the use of our platform by scammers.
They distribute malware, send spam, publish phishing sites, and engage in other misconduct.
Therefore, we implemented quite a lot of tools for analysis and early detection of such violations.
But this doesn't provide 100% protection - sometimes tunnel nodes still end up in antivirus databases,
and here our task is to learn about this as quickly as possible, block the violator, and promptly contact the antivirus company to remove our domains,
subdomains, and IP addresses from quarantine databases.</p>
<p>Fortunately, there's such a wonderful resource as <a href="https://www.virustotal.com/" target="_blank" rel="noopener noreferrer" class="">VirusTotal</a> - essentially an aggregator.
In it, you can check a resource (domain, IP, file) for presence in any antivirus databases.
Everything is very simple and visual, looks something like this:</p>
<p><img decoding="async" loading="lazy" src="https://tuna.am/en/assets/images/vt-367db5466c61048a8e61b72928436bfe.png" width="1320" height="686" class="img_ev3q"></p>
<p>VirusTotal has a public API, also a CLI utility, ready-made clients for some languages, and if you register and get an API Key, you can automate everything quite well,
which will allow you to learn about presence in databases as quickly as possible. Which is what we did.
But keep in mind that the free tier has some limitations on the number of requests, but for a dozen domains/IPs it will definitely be enough.</p>
<p><img decoding="async" loading="lazy" src="https://tuna.am/en/assets/images/vt-quota-10b95ad6cd0ad82e502e8ef191c15f17.png" width="1315" height="441" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-to-use">How to use?<a href="https://tuna.am/en/blog/vt-telegram-bot/#how-to-use" class="hash-link" aria-label="Direct link to How to use?" title="Direct link to How to use?" translate="no">​</a></h2>
<p>In the <a href="https://gitlab.com/yuccastream/vt-telegram-bot" target="_blank" rel="noopener noreferrer" class="">repository</a> you'll find binary builds and docker images for deployment, as well as configuration instructions.
We'll be happy to receive feedback and merge requests.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/vt-telegram-bot/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/vt-telegram-bot/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[🆕 Webhooks - new functionality]]></title>
            <link>https://tuna.am/en/blog/webhooks/</link>
            <guid>https://tuna.am/en/blog/webhooks/</guid>
            <pubDate>Wed, 27 Aug 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Tuna Webhooks - a new feature in our developer toolset.]]></description>
            <content:encoded><![CDATA[<p>In this update, we added new functionality - <a href="https://my.tuna.am/webhooks" target="_blank" rel="noopener noreferrer" class="">Webhooks</a>.
A feature that allows you to easily see what's in the request sent by any service.
In particular, understand what information actually comes in the request body, headers, source IP, and so on.</p>
<p><a href="https://my.tuna.am/webhooks" target="_blank" rel="noopener noreferrer" class="">Go to dashboard</a></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="https://tuna.am/en/blog/webhooks/#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h2>
<div style="width:100%;height:auto"></div>
<hr>
<p>A new section <a href="https://my.tuna.am/webhooks" target="_blank" rel="noopener noreferrer" class="">Webhooks</a> has appeared in the dashboard.
Here you can create links for testing, debugging, and creating mocks.
This is quite convenient when you want to understand why a service's webhook documentation doesn't match reality - just specify the link and everything will become clear.
You'll see all headers and request body in a convenient format.
In the <a class="" href="https://tuna.am/en/docs/webhooks/">documentation</a> section, you'll find more detailed information on managing webhooks and examples.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/webhooks/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/webhooks/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>release</category>
        </item>
        <item>
            <title><![CDATA[IP filters in TCP, SSH, Postgres and Redis tunnels]]></title>
            <link>https://tuna.am/en/blog/release-v0-25-0/</link>
            <guid>https://tuna.am/en/blog/release-v0-25-0/</guid>
            <pubDate>Fri, 13 Jun 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Support for IP filtering of incoming connections for TCP and all TCP-like tunnels has been added]]></description>
            <content:encoded><![CDATA[<p>In the console client <strong>tuna</strong> version v0.25.0 we added the ability to restrict IPs and subnets from which connections can be made.
This increases the level of security and is especially important in applications without built-in authorization.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-flags">New flags<a href="https://tuna.am/en/blog/release-v0-25-0/#new-flags" class="hash-link" aria-label="Direct link to New flags" title="Direct link to New flags" translate="no">​</a></h2>
<p>The <code>tuna tcp</code>, <code>tuna ssh</code>, <code>tuna postgres</code> and <code>tuna redis</code> commands have new flags and env analogs:</p>
<div class="theme-tabs-container tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">Flags</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Envs</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">--cidr-allow </span><span class="token comment" style="color:#999988;font-style:italic"># Reject connections that do not match specified CIDRs</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">--cidr-deny </span><span class="token comment" style="color:#999988;font-style:italic"># Reject connections matching specified CIDRs</span><br></div></code></pre></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">TUNA_CIDR_ALLOW </span><span class="token comment" style="color:#999988;font-style:italic"># Reject connections that do not match specified CIDRs</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">TUNA_CIDR_DENY </span><span class="token comment" style="color:#999988;font-style:italic"># Reject connections matching specified CIDRs</span><br></div></code></pre></div></div></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="usage-examples">Usage examples<a href="https://tuna.am/en/blog/release-v0-25-0/#usage-examples" class="hash-link" aria-label="Direct link to Usage examples" title="Direct link to Usage examples" translate="no">​</a></h2>
<div class="theme-tabs-container tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">TCP</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">SSH</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Postgres</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Redis</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><p>You can define a whitelist of <a href="https://en.wikipedia.org/wiki/Subnetwork" target="_blank" rel="noopener noreferrer" class="">subnets</a> in CIDR format:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna tcp </span><span class="token number" style="color:#36acaa">3389</span><span class="token plain"> --cidr-allow</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/32"</span><br></div></code></pre></div></div><p>Or block access from specific subnets:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna tcp </span><span class="token number" style="color:#36acaa">3389</span><span class="token plain"> --cidr-deny</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/32"</span><br></div></code></pre></div></div><p>You can combine, for example specify a wide network and subtract private IPs:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna tcp </span><span class="token number" style="color:#36acaa">3389</span><span class="token plain"> --cidr-allow</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/24"</span><span class="token plain"> --cidr-deny</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.33/32"</span><br></div></code></pre></div></div><p>You can also pass lists separated by commas:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna tcp </span><span class="token number" style="color:#36acaa">3389</span><span class="token plain"> --cidr-allow</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/24,192.168.0.1/24"</span><span class="token plain"> --cidr-deny</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.33/32,192.168.0.33/32"</span><br></div></code></pre></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>You can define a whitelist of <a href="https://en.wikipedia.org/wiki/Subnetwork" target="_blank" rel="noopener noreferrer" class="">subnets</a> in CIDR format:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna </span><span class="token function" style="color:#d73a49">ssh</span><span class="token plain"> --cidr-allow</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/32"</span><br></div></code></pre></div></div><p>Or block access from specific subnets:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna </span><span class="token function" style="color:#d73a49">ssh</span><span class="token plain"> --cidr-deny</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/32"</span><br></div></code></pre></div></div><p>You can combine, for example specify a wide network and subtract private IPs:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna </span><span class="token function" style="color:#d73a49">ssh</span><span class="token plain"> --cidr-allow</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/24"</span><span class="token plain"> --cidr-deny</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.33/32"</span><br></div></code></pre></div></div><p>You can also pass lists separated by commas:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna </span><span class="token function" style="color:#d73a49">ssh</span><span class="token plain"> --cidr-allow</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/24,192.168.0.1/24"</span><span class="token plain"> --cidr-deny</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.33/32,192.168.0.33/32"</span><br></div></code></pre></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>You can define a whitelist of <a href="https://en.wikipedia.org/wiki/Subnetwork" target="_blank" rel="noopener noreferrer" class="">subnets</a> in CIDR format:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna postgres </span><span class="token number" style="color:#36acaa">5432</span><span class="token plain"> --cidr-allow</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/32"</span><br></div></code></pre></div></div><p>Or block access from specific subnets:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna postgres </span><span class="token number" style="color:#36acaa">5432</span><span class="token plain"> --cidr-deny</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/32"</span><br></div></code></pre></div></div><p>You can combine, for example specify a wide network and subtract private IPs:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna postgres </span><span class="token number" style="color:#36acaa">5432</span><span class="token plain"> --cidr-allow</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/24"</span><span class="token plain"> --cidr-deny</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.33/32"</span><br></div></code></pre></div></div><p>You can also pass lists separated by commas:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna postgres </span><span class="token number" style="color:#36acaa">5432</span><span class="token plain"> --cidr-allow</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/24,192.168.0.1/24"</span><span class="token plain"> --cidr-deny</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.33/32,192.168.0.33/32"</span><br></div></code></pre></div></div></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><p>You can define a whitelist of <a href="https://en.wikipedia.org/wiki/Subnetwork" target="_blank" rel="noopener noreferrer" class="">subnets</a> in CIDR format:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna redis </span><span class="token number" style="color:#36acaa">6379</span><span class="token plain"> --cidr-allow</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/32"</span><br></div></code></pre></div></div><p>Or block access from specific subnets:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna redis </span><span class="token number" style="color:#36acaa">6379</span><span class="token plain"> --cidr-deny</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/32"</span><br></div></code></pre></div></div><p>You can combine, for example specify a wide network and subtract private IPs:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna redis </span><span class="token number" style="color:#36acaa">6379</span><span class="token plain"> --cidr-allow</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/24"</span><span class="token plain"> --cidr-deny</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.33/32"</span><br></div></code></pre></div></div><p>You can also pass lists separated by commas:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">tuna redis </span><span class="token number" style="color:#36acaa">6379</span><span class="token plain"> --cidr-allow</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.1/24,192.168.0.1/24"</span><span class="token plain"> --cidr-deny</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"10.0.0.33/32,192.168.0.33/32"</span><br></div></code></pre></div></div></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="ip-policies-in-team">IP policies in Team<a href="https://tuna.am/en/blog/release-v0-25-0/#ip-policies-in-team" class="hash-link" aria-label="Direct link to IP policies in Team" title="Direct link to IP policies in Team" translate="no">​</a></h2>
<p>In <a class="" href="https://tuna.am/en/docs/team/">teams</a>, if <a class="" href="https://tuna.am/en/docs/team/ip_policies/">IP policies</a> are specified, they will work in conjunction with these flags.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="update">Update<a href="https://tuna.am/en/blog/release-v0-25-0/#update" class="hash-link" aria-label="Direct link to Update" title="Direct link to Update" translate="no">​</a></h2>
<p>To update, follow the <a class="" href="https://tuna.am/en/docs/guides/update/">instructions</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/release-v0-25-0/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/release-v0-25-0/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>release</category>
            <category>tuna</category>
            <category>cli</category>
        </item>
        <item>
            <title><![CDATA[🆕 Tuna Desktop - new GUI application]]></title>
            <link>https://tuna.am/en/blog/tuna-desktop-first/</link>
            <guid>https://tuna.am/en/blog/tuna-desktop-first/</guid>
            <pubDate>Mon, 26 May 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Release of the first version of our GUI application for creating tunnels - Tuna Desktop]]></description>
            <content:encoded><![CDATA[<p>We are excited to introduce a new client for creating tunnels, now as a desktop application with an interface.</p>
<p><img decoding="async" loading="lazy" alt="desktop_main" src="https://tuna.am/en/assets/images/main-3eefd7c74a66295ba24ca72f724f2433.png" width="1760" height="1816" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-why">🤷‍♂️ Why?<a href="https://tuna.am/en/blog/tuna-desktop-first/#%EF%B8%8F-why" class="hash-link" aria-label="Direct link to 🤷‍♂️ Why?" title="Direct link to 🤷‍♂️ Why?" translate="no">​</a></h2>
<p>During local development, it often happens that there is a tunnel with a static address that needs to be always accessible.
For example, when testing our payments in <a class="" href="https://tuna.am/en/docs/tunnels/examples/yookassa/">YooKassa</a>, we have a test store for each developer,
where a static HTTP notification address is specified. Opening a separate terminal each time and typing <code>tuna http -l ru -s test-yookassa-1 8080</code> becomes tedious,
and I always forget to do it in advance, which leads to creating multiple invoices or waiting for the payment system to resend the notification.</p>
<p>We also know that sometimes access to a local resource needs to be opened not only for developers or system administrators, and the command line is not the most user-friendly interface.</p>
<p>Considering several factors, we decided to create a GUI application with a maximally simple interface, so even an accountant could use it comfortably.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-key-features">🎯 Key Features<a href="https://tuna.am/en/blog/tuna-desktop-first/#-key-features" class="hash-link" aria-label="Direct link to 🎯 Key Features" title="Direct link to 🎯 Key Features" translate="no">​</a></h2>
<p>Currently, at the time of the first release, the application has minimal features:</p>
<ul>
<li class=""><a class="" href="https://tuna.am/en/docs/tunnels/http/">HTTP tunnels</a></li>
<li class=""><a class="" href="https://tuna.am/en/docs/tunnels/tcp/">TCP tunnels</a></li>
</ul>
<p>Even this functionality is significantly limited compared to the console version, all in favor of simplicity.
However, in the future, we plan to expand the functionality, for example, by adding a file server and basic authorization.</p>
<img src="https://tuna.am/docs/img/desktop/list.png" alt="desktop_list" style="width:30%;height:auto">
<img src="https://tuna.am/docs/img/desktop/icon.png" alt="desktop_icon" style="width:30%;height:auto">
<img src="https://tuna.am/docs/img/desktop/setting.png" alt="desktop_setting" style="width:30%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-supported-platforms">🧑‍💻 Supported Platforms<a href="https://tuna.am/en/blog/tuna-desktop-first/#-supported-platforms" class="hash-link" aria-label="Direct link to 🧑‍💻 Supported Platforms" title="Direct link to 🧑‍💻 Supported Platforms" translate="no">​</a></h2>
<p>We support all popular platforms: Windows, macOS, and Linux.<br>
<!-- -->Below are the links for downloading and installation:</p>
<div class="theme-tabs-container tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">Windows</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">macOS</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">Linux</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><ul>
<li class=""><a href="https://releases.tuna.am/desktop/latest/tuna-desktop_windows-amd64_installer_latest.zip" target="_blank" rel="noopener noreferrer" class="">Installer (requires admin rights)</a></li>
<li class=""><a href="https://releases.tuna.am/desktop/latest/tuna-desktop_windows-amd64_portable_latest.zip" target="_blank" rel="noopener noreferrer" class="">Portable version</a></li>
</ul></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><ul>
<li class=""><a href="https://releases.tuna.am/desktop/latest/tuna-desktop_darwin-arm64_latest.dmg" target="_blank" rel="noopener noreferrer" class="">ARM64 (Apple M)</a></li>
<li class=""><a href="https://releases.tuna.am/desktop/latest/tuna-desktop_darwin-amd64_latest.dmg" target="_blank" rel="noopener noreferrer" class="">AMD64 (Intel)</a></li>
</ul></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><ul>
<li class=""><a class="" href="https://tuna.am/en/docs/guides/install/install-desktop/?os=linux">Installation guide</a></li>
</ul></div></div></div>
<hr>
<p>For macOS and Windows, we plan to publish through official app stores later.</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_BuS1"><p>If you have suggestions for improvement, we would be happy to discuss them in our <a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram chat</a> or via <a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">e-mail</a></p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/tuna-desktop-first/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/tuna-desktop-first/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>release</category>
            <category>tuna</category>
            <category>desktop</category>
        </item>
        <item>
            <title><![CDATA[🆕 Secrets - New Feature]]></title>
            <link>https://tuna.am/en/blog/secrets/</link>
            <guid>https://tuna.am/en/blog/secrets/</guid>
            <pubDate>Fri, 09 May 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Update adds new platform functionality - Tuna Secrets]]></description>
            <content:encoded><![CDATA[<p>We are pleased to introduce a new component of the Tuna platform - <strong>Secrets</strong>. Designed for centralized and secure management of confidential settings and environment variables. It's a powerful alternative to <code>.env</code> files, variables in GitLab/GitHub CI, and other local storage solutions.</p>
<p><a class="" href="https://tuna.am/en/docs/secrets/">Go to the Secrets section in the documentation</a></p>
<div id="cast-/docs/cast/secrets_download.cast" class="asciinema-player"></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-what-are-tuna-secrets">🔐 What are Tuna Secrets?<a href="https://tuna.am/en/blog/secrets/#-what-are-tuna-secrets" class="hash-link" aria-label="Direct link to 🔐 What are Tuna Secrets?" title="Direct link to 🔐 What are Tuna Secrets?" translate="no">​</a></h2>
<p>The secrets service is designed to store settings for your applications that you run - locally, in CI/CD, or in your test and production environments. It is an excellent alternative to <code>.env</code> files and environment variables in CI/CD systems.</p>
<p><strong>Secrets</strong> are:</p>
<ul>
<li class="">A single source of configuration for local development, CI/CD, staging, and production environments.</li>
<li class="">Convenient management interface - via web, CLI, and API.</li>
<li class="">Support for RBAC, comments, reminders, and change auditing.</li>
<li class="">Flexible work with projects, environments, and configurations.</li>
<li class="">All secrets are encrypted, keys are not stored in the database. A database leak will not lead to data disclosure.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-who-is-it-for">👥 Who is it for?<a href="https://tuna.am/en/blog/secrets/#-who-is-it-for" class="hash-link" aria-label="Direct link to 👥 Who is it for?" title="Direct link to 👥 Who is it for?" translate="no">​</a></h2>
<ol>
<li class=""><strong>Developers</strong> — to simplify environment setup and reduce "magic" values in code.</li>
<li class=""><strong>DevOps engineers</strong> — for centralization and automation of configurations.</li>
<li class=""><strong>Teams</strong> — for secure and controlled shared access to confidential data.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-key-features">🎯 Key Features<a href="https://tuna.am/en/blog/secrets/#-key-features" class="hash-link" aria-label="Direct link to 🎯 Key Features" title="Direct link to 🎯 Key Features" translate="no">​</a></h2>
<p>We have implemented a structure that allows for effective secret management.
In this video, you'll see a brief overview of the capabilities:</p>
<div class="theme-tabs-container tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">VK Video</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">YouTube</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><iframe src="https://vkvideo.ru/video_ext.php?oid=-230240053&amp;id=456239017&amp;hd=1&amp;autoplay=0" width="640" height="360" allow="autoplay; encrypted-media; fullscreen; picture-in-picture; screen-wake-lock;" frameborder="0"></iframe></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><div style="width:640px;height:360px"></div></div></div></div>
<hr>
<p>Hierarchy: projects → environments → configurations.</p>
<p>We follow a common structure, so secret storage is divided by projects, within projects there are environments, and within environments there are main or child configurations. Inside configurations, there are many functions for working directly with secrets and access to them, auditing, and more. When working in a <a class="" href="https://tuna.am/en/docs/team/">Team</a>, the roles section allows you to granularly distribute participant access to the needed environments in projects.</p>
<p>What else is in secrets?</p>
<ul>
<li class=""><strong>Configuration duplication</strong> - create unique configurations for each user.</li>
<li class=""><strong>Variable types</strong> — you can specify bool, int, and other types.</li>
<li class=""><strong>Generator and comments</strong> — convenient addition and annotation of secrets.</li>
<li class=""><strong>Reminders</strong> — email notifications about the need to update a secret.</li>
<li class=""><strong>Environment comparison</strong> — find differences between configurations.</li>
<li class=""><strong>Secret hiding</strong> — exclude unique prod variables from comparison.</li>
<li class=""><strong>Service keys</strong> — API keys for read/write access to a specific configuration.</li>
<li class=""><strong>IP restriction</strong> — access control by CIDR.</li>
<li class=""><strong>Change history</strong> — full audit of all actions.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-cli-integration">⚙️ CLI Integration<a href="https://tuna.am/en/blog/secrets/#%EF%B8%8F-cli-integration" class="hash-link" aria-label="Direct link to ⚙️ CLI Integration" title="Direct link to ⚙️ CLI Integration" translate="no">​</a></h2>
<p>Naturally, the <strong>tuna</strong> console client is fully <a class="" href="https://tuna.am/en/docs/secrets/cli/">integrated</a>:</p>
<ul>
<li class=""><code>tuna secrets download</code> — Getting secrets with the ability to save to a file (<code>json</code>, <code>yaml</code>, <code>env</code>) or output to <em>stdout</em>.</li>
<li class=""><code>tuna secrets setup</code> — Setting up a directory for scope configuration.</li>
<li class=""><code>tuna secrets run</code> — Automatic application configuration with passing environment variables directly to the process. And with the <code>--watch</code> flag, the application will restart automatically when a secret is changed in the personal account.</li>
</ul>
<div class="theme-tabs-container tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">VK Video</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">YouTube</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><iframe src="https://vkvideo.ru/video_ext.php?oid=-230240053&amp;id=456239018&amp;hd=2&amp;autoplay=0" width="640" height="360" allow="autoplay; encrypted-media; fullscreen; picture-in-picture; screen-wake-lock;" frameborder="0"></iframe></div><div role="tabpanel" class="tabItem_Ymn6" hidden=""><div style="width:640px;height:360px"></div></div></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="️-access-management-and-security">🛡️ Access Management and Security<a href="https://tuna.am/en/blog/secrets/#%EF%B8%8F-access-management-and-security" class="hash-link" aria-label="Direct link to 🛡️ Access Management and Security" title="Direct link to 🛡️ Access Management and Security" translate="no">​</a></h2>
<ul>
<li class=""><strong>RBAC in team</strong> — Provide access to environments precisely by users.</li>
<li class=""><strong>Service keys</strong> — Issue unique keys for specific configurations with <em>read</em> or <em>read and write</em> restrictions. Perfect for use in CI/CD.</li>
<li class=""><strong>Allowed IP addresses and subnets</strong> — Restrict access to secrets by specifying allowed IP addresses and subnets in CIDR format.</li>
<li class=""><strong>Change history</strong> — Full audit of all actions and changes within configurations allows tracking who changed secrets and when.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/secrets/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/secrets/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>release</category>
            <category>tuna</category>
            <category>cli</category>
        </item>
        <item>
            <title><![CDATA[🆕 Новые типы туннелей - Postgres и Redis]]></title>
            <link>https://tuna.am/en/blog/tunnels-pg-and-redis/</link>
            <guid>https://tuna.am/en/blog/tunnels-pg-and-redis/</guid>
            <pubDate>Wed, 30 Apr 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Новые туннели Postgres и Redis, теперь с поддержкой инспекции запросов]]></description>
            <content:encoded><![CDATA[<p>Мы расширяем возможности <a class="" href="https://tuna.am/en/docs/tunnels/">Туннелей</a> и добавили новые типы - <a class="" href="https://tuna.am/en/docs/tunnels/postgres/">Postgres</a> и <a class="" href="https://tuna.am/en/docs/tunnels/redis/">Redis</a>, теперь с поддержкой инспекции запросов!</p>
<p>Ранее для предоставления доступа к любым базам данных нужно было открывать доступ с помощью <a class="" href="https://tuna.am/en/docs/tunnels/tcp/">TCP туннеля</a>, но теперь для <strong>Postgres</strong> и <strong>Redis</strong> мы добавили возможность запускать специализированный тип туннеля. При этом появляется аудит и инспекция запросов которые вы отправляете в базу.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-postgres"><i class="devicon-postgresql-plain colored"></i> Postgres<a href="https://tuna.am/en/blog/tunnels-pg-and-redis/#-postgres" class="hash-link" aria-label="Direct link to -postgres" title="Direct link to -postgres" translate="no">​</a></h2>
<p><a class="" href="https://tuna.am/en/docs/tunnels/postgres/">Postgres туннель</a> позволяет предоставить доступ к базе данных PostgreSQL и отслеживать выполняемые SQL запросы в инспекторе.</p>
<div id="cast-/docs/cast/tuna_postgres.cast" class="asciinema-player"></div>
<hr>
<p>Слева отображается список сессий, а справа вывод команд, которые были выполнены внутри сессий.</p>
<img src="https://tuna.am/docs/img/inspect/web_postgres.webp" alt="web_postgres">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="-redis"><i class="devicon-redis-plain colored"></i> Redis<a href="https://tuna.am/en/blog/tunnels-pg-and-redis/#-redis" class="hash-link" aria-label="Direct link to -redis" title="Direct link to -redis" translate="no">​</a></h2>
<p><a class="" href="https://tuna.am/en/docs/tunnels/redis/">Redis туннель</a> аналогично позволяет предоставить доступ к базе данных Redis и отслеживать выполняемые запросы в инспекторе.</p>
<div id="cast-/docs/cast/tuna_redis.cast" class="asciinema-player"></div>
<hr>
<p>Слева отображается список сессий, а справа вывод команд, которые были выполнены внутри сессий.</p>
<img src="https://tuna.am/docs/img/inspect/web_redis.webp" alt="web_redis">
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/tunnels-pg-and-redis/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/tunnels-pg-and-redis/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>release</category>
            <category>tuna</category>
            <category>cli</category>
        </item>
        <item>
            <title><![CDATA[Плановые работы 16.04.2025 в регионе RU (Россия)]]></title>
            <link>https://tuna.am/en/blog/maintain-ru/</link>
            <guid>https://tuna.am/en/blog/maintain-ru/</guid>
            <pubDate>Mon, 14 Apr 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Плановые работы 16.04.2025 в регионе RU (Россия), ожидается недоступность от 10 до 60 минут в промежутке с 11 до 13 часов МСК.]]></description>
            <content:encoded><![CDATA[<p>⚠️ Внимание! Плановые работы 🛠️ <strong>16.04.2025</strong> запланированы в регионе <strong>RU (Россия)</strong>, ожидается недоступность от 10 до 60 минут в промежутке с 11 до 13 часов МСК.</p>
<p>Будет произведена смена IP адресов и переезд к новому провайдеру.</p>
<ul>
<li class=""><code>178.20.41.29</code> &gt; <code>37.252.22.27</code></li>
<li class=""><code>178.20.43.146</code> &gt; <code>37.252.21.90</code></li>
</ul>
<p>Старый IP на адресе <code>178.20.41.29</code> продолжит работать, для обратной совместимости с пользовательскими доменами, что используют в dns А запись.
По завершении работ мы объявим о дате полного отключения старого адреса, а всех владельцев пользовательскими доменов дополнительно уведомим о необходимости изменить DNS запись после проведения работ.</p>
<p>Работы необходимо провести в рамках модернизации инфраструктуры и повышения стабильности.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/maintain-ru/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/maintain-ru/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>maintain</category>
        </item>
        <item>
            <title><![CDATA[Плановые работы 14.04.2025 в регионе NL (Нидерланы)]]></title>
            <link>https://tuna.am/en/blog/maintain-nl/</link>
            <guid>https://tuna.am/en/blog/maintain-nl/</guid>
            <pubDate>Fri, 11 Apr 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Плановые работы 14.04.2025 в регионе NL (Нидерланы), ожидается недоступность от 1 до 12 часов в течении дня.]]></description>
            <content:encoded><![CDATA[<p>⚠️ Внимание! Плановые работы 🛠️ <strong>14.04.2025</strong> запланированы в регионе <strong>NL (Нидерланы)</strong>, ожидается недоступность от 1 до 12 часов в течении дня.</p>
<p>Будет произведена смена IP адресов и переезд к новому провайдеру.</p>
<ul>
<li class=""><code>193.33.194.47</code> &gt; <code>89.19.217.251</code></li>
<li class=""><code>62.84.101.212</code> &gt; <code>147.45.238.190</code></li>
</ul>
<p>Старый IP на адресе <code>193.33.194.47</code> продолжит работать, для обратной совместимости с пользовательскими доменами, что используют в dns А запись.
По завершении работ мы объявим о дате полного отключения старого адреса, а всех владельцев пользовательскими доменов дополнительно уведомим о необходимости изменить DNS запись после проведения работ.</p>
<p>Работы необходимо провести в рамках модернизации инфраструктуры и повышения стабильности.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/maintain-nl/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/maintain-nl/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>maintain</category>
        </item>
        <item>
            <title><![CDATA[Обновление клиента tuna 0.23.0 и инспектор 1.1.0]]></title>
            <link>https://tuna.am/en/blog/inspector-live-updates/</link>
            <guid>https://tuna.am/en/blog/inspector-live-updates/</guid>
            <pubDate>Thu, 03 Apr 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Обновление добавляет живое обновление списка запросов]]></description>
            <content:encoded><![CDATA[<p>В этом обновлении tuna 0.23.0 и инспектора 1.1.0 добавлено живое обновление списка запросов.</p>
<p><a class="" href="https://tuna.am/en/docs/tunnels/http/inspect/"><img decoding="async" loading="lazy" alt="inspector-live-updates" src="https://tuna.am/en/assets/images/inspector-live-updates-b0bdc265f57916db1473f642f39ef087.webp" width="1511" height="893" class="img_ev3q"></a></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leave-feedback">Leave feedback<a href="https://tuna.am/en/blog/inspector-live-updates/#leave-feedback" class="hash-link" aria-label="Direct link to Leave feedback" title="Direct link to Leave feedback" translate="no">​</a></h2>
<p>If you enjoy using Tuna, or on the contrary you are not happy with something, please <a href="https://my.tuna.am/?show_feedback=1" target="_blank" rel="noopener noreferrer" class="">leave feedback</a>.</p>
<img src="https://tuna.am/blog/img/2024-08-22/feedback.gif" style="width:50%;height:auto">
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="help">Help<a href="https://tuna.am/en/blog/inspector-live-updates/#help" class="hash-link" aria-label="Direct link to Help" title="Direct link to Help" translate="no">​</a></h2>
<p>We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways:</p>
<ul>
<li class=""><a href="mailto:info@tuna.am" target="_blank" rel="noopener noreferrer" class="">Email</a></li>
<li class=""><a href="https://telegram.me/+Kgbtt0_gJwI5ZmEy" target="_blank" rel="noopener noreferrer" class="">Telegram community</a></li>
</ul>]]></content:encoded>
            <category>release</category>
            <category>tuna</category>
            <category>cli</category>
        </item>
    </channel>
</rss>