Daemon-режим
Как запустить туннели fxTunnel в фоне командой fxtunnel up, проверить их статус, добавить туннель на ходу, остановить демон и включить автозапуск через systemd.
В daemon-режиме клиент работает в фоне: туннели из конфигурационного файла остаются открытыми после закрытия терминала, а управлять ими можно командами status и down.
Запуск
$fxtunnel up
→ Daemon started (PID 12345)
→ HTTP: http://myapp.fxtun.ru
→ TCP: fxtun.ru:12222
→ Uptime: 1sДемон читает туннели из того же файла, что и команда fxtunnel: сначала fxtunnel.yaml в текущей папке, затем client.yaml — порядок описан в разделе «Конфигурационный файл». Другой файл указывается флагом --config:
$fxtunnel up --config path/to/config.yamlЕсли демон уже запущен, команда ответит Daemon is already running. и второй не запустит.
В фоне демон никуда не пишет ошибки. Если вместо адресов туннелей вы видите Daemon started but status not available yet., запустите fxtunnel up --foreground — клиент останется в терминале и покажет, что пошло не так.
Статус
$fxtunnel status
→ Daemon running (PID 12345)
→ Server: tunnel.fxtun.ru:443
→ HTTP: http://myapp.fxtun.ru
→ TCP: fxtun.ru:12222
→ Uptime: 2h15m0sЕсли демон не запущен, команда ответит Daemon is not running.
Туннель на ходу
Пока демон работает, команды fxtunnel http, tcp и udp не открывают отдельное подключение, а добавляют туннель в демон и сразу возвращают терминал:
$fxtunnel http 8080
→ Tunnel added: http://k3j9x2.fxtun.ru -> localhost:8080Такой туннель не записывается в файл и пропадает, когда демон переподключается к серверу или перезапускается. Туннели, которые нужны постоянно, добавьте в fxtunnel.yaml.
Остановка
$fxtunnel down
→ Daemon stopped.Демон закрывает все туннели и завершается.
Особенности
- Демон всегда переподключается после обрыва связи, даже если в файле
reconnect.enabled: false. - Флаги
--no-inspect,--inspect-addrи--insecureдемон не учитывает: инспектор настраивается в секцииinspectконфигурационного файла.
Автозапуск через systemd
В Linux демон можно запускать вместе с системой. Токен удобно передать через файл окружения, доступный только вашему пользователю:
$mkdir -p ~/.fxtunnel
$echo 'FXTUNNEL_TOKEN=sk_fxtunnel_ваш_токен' > ~/.fxtunnel/env
$chmod 600 ~/.fxtunnel/envФайл службы /etc/systemd/system/fxtunnel.service — замените user на своё имя пользователя, а /home/user/project — на папку с fxtunnel.yaml:
[Unit]
Description=fxTunnel client
After=network-online.target
Wants=network-online.target
[Service]
User=user
WorkingDirectory=/home/user/project
EnvironmentFile=/home/user/.fxtunnel/env
ExecStart=/home/user/.local/bin/fxtunnel up --foreground
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target$sudo systemctl daemon-reload
$sudo systemctl enable --now fxtunnelСлужба запускает клиент с --foreground: так systemd сам следит за процессом и перезапускает его после сбоя.