Многопользовательская торрент-качалка на transmission
Хочу рассказать о том, как реализовать торрент-демон с разделением по пользователям. В качестве торрент-клиента будет использован transmission-daemon.
Торрент-демон — это программа(сервис), которая выступает в качестве торрент-клиента(качалки) и как правило используется на всяких HTPC, NAS, роутерах и т.п. что бы качать/раздавать торренты не на основном ПК/ноутбуке, а на устройстве, которое всегда включено/онлайн.
Введение, для тех, кто не знаком с тем, что такое transmission-daemon
Одним из распространенных торрент-демонов является transmission-daemon. Для него есть множество GUI-клиентов для разных платформ, которые работают по http и могут подключаться к качалке удаленно, что очень удобно. Использование такого клиента для пользователя не будет отличатся от обычных торрент-клиентов, при этом если клиент закрыть, скачивание/раздача не прекращается, а продолжается на удаленной машине-сервере. Так же у transmission-daemon есть свой «стандартный» web-интерфейс.
Проблема:
И все было бы хорошо, но transmission-daemon хоть и предусматривает авторизацию, но только для одного пользователя. Поэтому если Вы захотите, что бы вашей торрент-качалкой пользовался кто-то еще кроме Вас, то прийдется делить один аккаунт — вы оба сможете просматривать и управлять закачками друг друга, что не очень удобно.
Способ решения
Самым очевидным простым и элегантным, на мой взгляд, решением является запуск transnmission одновременно от разных пользователей. В данном случае в качестве ОС применяется Ubuntu Server 12.10, поэтому можно создать отдельный Upstart User Job для каждого пользователя. Для других дистрибутивов вместо этого можно просто создать init.d скрипты.
Решение
Подготовим систему:
установим transmission-daemon:
sudo apt-get install transmission-daemon
Разрешим выполнение пользовательских демонов или User Jobs, для этого нужно заменить файл «/etc/dbus-1/system.d/Upstart.conf», предварительно сделав бекап старого.
sudo mv /etc/dbus-1/system.d/Upstart.conf /etc/dbus-1/system.d/Upstart.conf.save
новый файл /etc/dbus-1/system.d/Upstart.conf:
Дальше стоит выключить стандартный demon, который запускается от рута при старте системы:
sudo sh -c 'echo "manual" > /etc/init/transmission-daemon.override' sudo service transmission-daemon stop
Настройка конкретного пользователя:
создаем Upstart User Job
Логинимся под очередным юзером, который будет использовать transmission-daemon и выполняем скрипт:
mkdir $HOME/.init cat $HOME/.init/transmissiond-$USER.conf start on $USER-logged-in stop on runlevel [!2345] kill timeout 30 respawn setuid $USER env HOME=$HOME pre-start script # stop job from continuing if no config file found for daemon [ ! -f \$HOME/.transmissiond/transmission-daemon ] && < stop; exit 0; ># source the config file . \$HOME/.transmissiond/transmission-daemon # stop job from continuing if admin has not enabled service in # config file. [ "\$ENABLE_DAEMON" != 0 ] || < stop; exit 0; >end script script . \$HOME/.transmissiond/transmission-daemon exec /usr/bin/transmission-daemon -f \$OPTIONS end script End-of-list
Скрипт создаст файл ~/.init/transmissiond-$USER.conf с необходимыми настройками пользовательского демона.
Поле на которое стоит обратить внимание — это «start«. В данном случае Job будет стартовать только в случае, если пользователь залогинился в систему, что вовсе не обязательно. Однако, если установлено шифрование домашнего каталога — необходимо, иначе некуда будет сохранять скачанное. Если директория скачивания доступна и до логина пользователя, то «start on $USER-logged-in» можно заменить на «start on runlevel [2345]» . В таком случае, однако, Job не нужно делать пользовательским, а можно расположить в /etc/init/
Настраиваем env user-demona:
cat $HOME/.transmissiond/transmission-daemon ENABLE_DAEMON=1 CONFIG_DIR="$HOME/.transmissiond" OPTIONS="--config-dir \$CONFIG_DIR" End-of-text
Создаем файл настроек торрент-клиента
Не забудьте заменить pass=»*****» на свой пароль. После первого запуска transmission сам скроет пароль хешем — в открытом виде не хранит.
uid=`id -u` pass="*****" #здесь забиваем пароль пользователя cat $HOME/.transmissiond/settings.json < "alt-speed-down": 100, "alt-speed-enabled": false, "alt-speed-time-begin": 540, "alt-speed-time-day": 127, "alt-speed-time-enabled": false, "alt-speed-time-end": 1020, "alt-speed-up": 100, "bind-address-ipv4": "0.0.0.0", "bind-address-ipv6": "::", "blocklist-enabled": false, "blocklist-url": "http://www.example.com/blocklist", "cache-size-mb": 32, "dht-enabled": true, "download-limit": 100, "download-limit-enabled": 0, "download-queue-enabled": true, "download-queue-size": 5, "encryption": 1, "idle-seeding-limit": 30, "idle-seeding-limit-enabled": false, "incomplete-dir-enabled": true, "lpd-enabled": false, "max-peers-global": 200, "message-level": 2, "peer-congestion-algorithm": "", "peer-limit-global": 240, "peer-limit-per-torrent": 60, "peer-port-random-high": 65535, "peer-port-random-low": 49152, "peer-port-random-on-start": false, "peer-socket-tos": "default", "pex-enabled": true, "port-forwarding-enabled": true, "preallocation": 1, "prefetch-enabled": 1, "queue-stalled-enabled": true, "queue-stalled-minutes": 30, "ratio-limit": 2, "ratio-limit-enabled": false, "rename-partial-files": true, "rpc-authentication-required": true, "rpc-bind-address": "0.0.0.0", "rpc-enabled": true, "rpc-url": "/transmission/", "rpc-whitelist": "127.0.0.1", "rpc-whitelist-enabled": false, "scrape-paused-torrents-enabled": true, "script-torrent-done-enabled": false, "script-torrent-done-filename": "", "seed-queue-enabled": false, "seed-queue-size": 10, "speed-limit-down": 256, "speed-limit-down-enabled": false, "speed-limit-up": 256, "speed-limit-up-enabled": false, "start-added-torrents": true, "trash-original-torrent-files": false, "umask": 18, "upload-limit": 100, "upload-limit-enabled": 0, "upload-slots-per-torrent": 14, "utp-enabled": true, "download-dir": "$HOME/downloads", "incomplete-dir": "$HOME/downloads/incomplete", "peer-port": $((51413 + $uid - 1000)), "rpc-username": "$USER", "rpc-password": "$pass", "rpc-port": $((9091 + $uid - 1000)) >End-of-list
Каждый торрент-демон будет висеть на своем отдельном порте, как для входящих торрент-соединений, так и для управления-интерфейса. Номер порта (веб интерфейс) конкретного пользователя вычисляется по формуле rpc-port = 9091 + $uid — 1000 Таким образом пользователь с uid 1000 сможет зайти на веб-интерфейс по server:9091 , а пользователь с uid 1010 — по server:9101 . peer-port вычисляется аналогично.
Все недокачанные торренты будут лежать в ~/downloads/incomplete, а готовые — в ~/downloads.
В том случае, если используется, шифрование домашней директории пользователя, нужно что бы демон стартовал только когда пользователь залогинен, поэтому добавляем в конце .bashrc соответсвующий ивент, что бы Upstart знал, что пора запускать transmission:
echo "# start user specific daemons" >> "$HOME/.bashrc" echo "initctl emit $USER-logged-in" >> "$HOME/.bashrc"
и еще, наверное, желательно что бы если юзер сделал логаут — демон продолжал крутиться:
mv «$HOME/.ecryptfs/auto-umount» «$HOME/.ecryptfs/_auto-umount»
По желанию можно также сделать проксирование через nginx/apache что бы разные пользователи могли заходить на интерфейс через разные домены, например.
Заключение
Каждый пользователь, с которым проделаны манипуляции из «Настройка конкретного пользователя», может пользоваться своим собственным transmission-daemon, не мешая другим и не перемешивая скачанное. Если объединить это с ftp/samba/. то пользователи смогут и забирать скачанные файлы.
Манипуляции можно засунуть в скрипт и тогда достаточно будет для каждого нового пользователя выполнить одну команду и все — можно пользоваться.
- Децентрализованные сети
- *nix
Как использовать торренты с SecureVPN
Интернет пиратство по вполне очевидным причинам является нелегальным в большинстве стран мира. Для того, чтобы получить доступ к заблокированным торрент трекерам, люди используют VPN в качестве подходящей технологии.
Разумеется, вы можете скачивать торренты с помощью SecureVPN, но есть одно правило: вы не должны раздавать их другим людям. Наши серверы расположены в разных странах с разными законами. Во многих странах распостранение контента вне закона и считается нарушением авторских прав, наши серверы могут быть заблокированы за нарушения местных законов. К счастью, это неприменимо к закачке и вы можете свободно делать это.
Далее мы расскажем, как отключить функцию автоматической раздачи в популярных торрент клиентах.
qBittorrent
- Перейдите в Settings > BitTorrent
- В Share Ratio Limiting поставьте флажок на Seed torrents until their ration reaches и установите значение 0
- Смените действие с Pause them на Remove them
- Нажмите OK чтобы сохранить изменения
uTorrent
- Перейдите в Options > Preferences > Queueing
- Измените все 3 Seeding Goal значения на 0
- Установите флажок на Limit the upload rate и измените значение на 0
- Вы также можете изменить Number of upload slots per torrent на 0 и Maximum upload rate на 1 во вкладке Bandwidth
Vuze
- Перейдите в Tools > Options > Queue
- Затем расширьте Seeding нажатием на символ +
- Нажмите Ignore Rules
- Введите значение 0 рядом с Ignore torrents with seeding ratio over. Эта опция исключит все файлы из списка раздачи
- Нажмите OK чтобы сохранить изменения
Deluge
- Перейдите в Edit > Preferenсes > Queue
- Установите флажок на Stop seeding when share ratio reaches. Введите значение в соседнее поле (какое значение?). Дополнительно вы можете поставить флажок на Remove torrent when ratio is reached.
- Нажмите Apply и затем OK
Если вы используете другой BitTorrent клиент, вы можете воспользоваться любой поисковой системой, чтобы найти, как отключить раздачу в вашем клиенте, или найдите связанные с этим опции в настройках. Процедура в целом примерно одинаковая для всех торрент клиентов.
Вся информация, представленная в этом тексте, следует так называемой Трагедии общин и противоречит основным принципам использования протокола BitTorrent. Если вы перестанете раздавать торренты, этот способ передачи данных перестанет работать. Мы не хотим, чтобы это произошло. Но, к сожалению, наш сервис не сможет существовать, если все наши пользователи продолжат раздавать торренты с его использованием. Пожалуйста, рассмотрите возможность раздачи торрентов без SecureVPN, конечно в том случае, если законы в вашей стране позволяют это делать.
Команды бота Midjourney
Команда — это инструкция для бота Midjourney в дискорде. Команда говорит боту какое действие вы от него ожидаете. Команды можно давать в любом текстовом канале, к которому у бота есть доступ. Команды начинаются со слеша «/».
Важно понимать, что Midjourney Bot, с которым вы переписываетесь в дискорде — это ещё не нейросеть, это своеобразный «посредник» между вами и Midjourney. Бот проверяет правильность написания запроса, фильтрует запрещённые слова, ставит ваши запросы в нужную очередь и перенаправляет вам результат.
Само выполнение команд ботом не тратит минут. Минуты расходуются только на генерацию изображений нейросетью в «быстром» режиме.
Список команд бота
Задает вопрос боту, например, «/ask» subscription покажет страницу с вариантами подписки, а «/ask relax» расскажет о том, как использовать relax mode.
Команда, которая позволит вам загрузить несколько изображений для того, чтобы Midjourney смешала изображения их друг с другом. С этой командой не нужно текстовое описание, достаточно выбрать картинки и соотношение сторон для результата — портретное, квадратное или альбомное.
Эта команда появилась недавно. После этой команды вы сможете загрузить изображение, а в ответе бот пришлет вам четыре варианта запроса, каждый из которых достаточно детально описывает это изображение. В конче каждого варианта будут стоять числа — это соотношение сторон загруженного изображения.
Под картинкой будут стоять кнопки 1-4. Нажав на кнопку, вы отправите на генерацию запрос под этим номером.
Переключение в «быстрый» режим генерации. В этом режиме изображения генерятся от 30 до 60 секунд, но тратятся минуты из тарифа.
Этот режим всегда включен для пробного тарифа и тарифа “Basic”.
Эта команда покажет список ссылок на документацию и FAQ на сайте https://midjourney.com и в дискорде Midjourney.
Кажется, что довольно бессмысленно объяснять, что делает эта команда. В недавнем обновлении бота её описание изменили на «создавайте изображения с Midjourney», хотя предыдущая версия, на мой взгляд, была намного поэтичнее:
Бот ответит на эту команду информацией об аккаунте:
- Subscription — Тип подписки и дата следующей оплаты
- Job Mode — Режим генерации: Fast / Relax
- Visibility Mode — Режим приватности
- Fast Time Remaining — Остаток времени тарифа в минутах и процентах
- Lifetime Usage — Статистика использования за все время в изображениях и часах
- Relaxed Usage — Такая же статистика, но только для генераций в «расслабленном» режиме
- Queued Jobs, Running Job — Количество задач в очередях и текущий запрос (если он генерируется прямо сейчас).
/prefer option set
Cохранённая комбинация параметров с собственным именем называется пресетом. Пресет можно позже вызвать по этому имени.
Для того, чтобы добавить пресет, напишите боту «/prefer option set», напишите в поле “option” название, а в “value” — набор настроек и отправьте команду боту.
Чтобы удалить пресет, отправьте команду «/prefer option set» с названием пресета в поле “option”, но не заполняя его значение:
В примере выше я создал пресет с названием “low”, в который сохранены два параметра: минимальное качество детализации и остановка генерации после 90% завершения.
Зачем он нужен? Когда я не уверен, что Midjourney сгенерирует нужную композицию, или я хочу попробовать что-то новое, я дописываю этот пресет к запросу: генерация изображений с такими параметрами тратит в среднем в два раза меньше минут тарифа, и моя внутренняя «жаба» не пытается меня задушить. Вот как это выглядит:
# Что я пишу боту: a full-body half-face shot of a robot, fine-line drawing —low # А вот что бот отправляет на генерацию: a full-body half-face shot of a robot, fine-line drawing —q .25 —stop 90
Когда я понимаю, что Midjourney идёт в правильном направлении, я могу получить сид этой генерации, и с его помощью повторить результат примерно в той же композиции, но уже полностью и в хорошем качестве:
Подробнее об этом методе, о сидах и о параметре “—stop” можно почитать в этих статьях:
/prefer auto_dm
Включает и выключает настройку, при которой бот будет автоматически отправлять детали каждого запроса в личном сообщении.
/prefer option list
Покажет вам список всех сохраненных вами пресетов и значения, из которых они состоят.
/prefer suffix
Эта команда нужна тем, кто постоянно использует одни и те же концовки запроса. Чтобы не писать их каждый раз, можно сохранить их в «суффикс», который будет добавлен ботом в конец каждого запроса.
Для того, чтобы добавить суффикс, напишите боту «/prefer suffix», кликните по кнопке “new_value” и добавьте нужную фразу. Чтобы удалить суффикс, отправьте команду «/prefer suffix» не заполняя её значением.
Примером суффикса может быть «4k» или «high detail» который часто используют те, кто верит, что это добавляет изображениям чёткости. В суффикс можно сохранить несколько фраз: «8k, octane render, unreal engine, very detailed, realistic, sharp».
Поскольку суффикс добавляется в самом конце запроса, вы не сможете использовать параметры в теле запроса: по правилам последними должны стоять они. Если вы добавите параметр, то бот выдаст ошибку, так как посчитает, что весь суффикс — это аргументы для параметра:
# Мы добавим в запрос параметры: the Grumpy cat —ar 1:2 —q 2 # Что бот попытается отправить в Midjourney: the Grumpy cat —ar 1:2 —q 2 4k, high detail # Суффикс засчитается как аргументы для последнего параметра —q: the Grumpy cat —ar 1:2 —q 2 4k, high detail
Получается, что параметры тоже нужно добавлять в суффикс, а это не всегда удобно.
Ещё одним минусом суффиксов является то, что он добавляется к каждому запросу, неважно хотите вы этого или нет.
Переключение в «публичный» режим генерации. В этом режиме всё, что вы сгенерируете, будет доступно всем посетителям на сайте www.midjourney.com, даже если вы переписываетесь с ботом на собственном сервере или даже в личных сообщениях.
Этот режим всегда включен для всех тарифов, кроме “Pro».
Переключение в «расслабленный» режим генерации. В этом режиме не тратятся минуты тарифного плана. Доступно только если ваша подписка — это “Standard” или “Pro”.
Эта команда включает/выключает режим ремикса. В режиме ремикса перед тем как создать вариации по кнопке V1-V4, бот откроет окно с первоначальным запросом, который можно изменить, а картинка, которую вы выбрали для создания вариаций, станет эталонным изображением для этого нового запроса.
Команда откроет окно настроек Midjourney, в котором вы сможете поменять модель, качество, стилизацию или выбрать режим, который хотите использовать по умолчанию.
Настройки, которые вы выберете, сохранятся и будут использоваться при каждой генерации, до тех пор, пока вы их не поменяете.
У каждой генерации есть “Job ID” — 32-значный идентификатор задачи на генерацию. С помощью команды «/show» и Job ID можно получить информацию о своём прошлом запросе:
/show 29c4f55d-d85d-4723-9466-3bb7ec55eb10 либо /show 29c4f55dd85d472394663bb7ec55eb10
Ответом будет точный запрос с параметрами и само изображение.
На сайте Midjourney можно получить Job ID, текст запроса и полную команду для любого изображения в галерее
Несмотря на то, что в галерее на сайте и в дискорде Midjourney можно получить Job ID для любой генерации — вашей или чужой — команда «/show» не покажет вам детали запроса, который сделан другим человеком.
Может быть полезно, если вы хотите найти свои старые генерации — значительно проще сделать это через галерею на сайте, чем искать их в дискорде.
Переключение в режим «скрытности». В этом режиме ваши изображения не будут показаны в галерее на сайте www.midjourney.com/app/, и их не смогут увидеть другие пользователи. Этот режим доступен только в тарифе “Pro».
Всё просто — эта команда создаёт ссылку на оплату подписки Midjourney.
Команды-эмоджи
Когда-то это было открытием для меня, но вы можете отреагировать на сообщение бота с помощью emoji.
❌ — отмена задачи
Реакция с этим emoji отменяет генерацию (если она ещё не завершена) и удаляет уже сгенерированные изображение из галереи в личном кабинете на сайте Midjourney. Первое позволяет не тратить минуты на запрос, отправленный по ошибке, а второе — почистить переписку с ботом или удалить из галереи неудачные картинки.
✉ — получить информация о генерации
Если отреагировать на сообщение смайликом конверта ✉, то бот пришлёт текст запроса, Job ID, seed и все изображения, которые были сгенерированы вам в личное сообщение. Если вы просили сохранить видео процесса генерации, то в сообщении от бота будет ссылка на это видео.
А лучшее обучение — это практика, поэтому каждый день мы тренируемся на котиках. Смотреть на это можно в нашем кошачьем канале. Всем добра и валерьяны за наш счёт!
Что такое seed/seeding в торренте
Файлы уже скачаны, закончено. Но на некоторых отмечает «Queued seed» а на других «Seeding». Какая разница?
Дополнен 10 лет назад
Господа, наконец дошло.
«Seeding» — означает, скачавший сам раздает.
«Queued seed» — означает, скачал но другим еще не нужно.
Лучший ответ
Это тот, у которого есть ПОЛНЫЙ файл, который поставлен на раздачу.
Пиры тоже раздают, хотя, у них и нет полного файла, но только те части, которые ужЕ скачали.
Остальные ответы
раздающие и принимающее и всё вместе
люди, которые производят «раздачу». ну Вы у них типа часть файлика скачиваете)))
Те кто раздоют игры. и т. дю и т. п.
а почему у меня игра не выходит
я тут один в 2022 почти, да?
нет, я реально в 2022 вспоминаю что такое торрент.
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.