Бюджетный seedbox своими руками

Раньше я уже писал про то, что пользуюсь seedbox. Сейчас коротко о том, как создать свой, но дешевле.

Недавно перевёл часть своих домашних проектов в Scalaway. За 2.99 € в месяц они дают: 2 ядра, 2 ГБ памяти и 50 ГБ на жёстком диске. Место можно докупить по 1 € за каждые 50 ГБ сверху. Машины работаю очень быстро, никаких проблем за несколько месяцев использования у меня не было.

Решил попробовать их для раздачи торрентов. Сначала поднял машину с Ubuntu 16 и подтянул Docker.

Добавил авторизацию ключами:

# генерируем ключик без "passphrase"
ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa_simple -q -N ""  

# загружаем на удалённую машину
cat ~/.ssh/id_rsa_simple.pub | ssh [email protected] 'mkdir -p -m 700 ~/.ssh; cat >> ~/.ssh/authorized_keys'

Установка

За основу взял Dockerfile от kfei:

git clone https://github.com/kfei/docktorrent  
cd docktorrent    

Задаём пароль для авторизации пользователя в ruTorrent:

vim Dockerfile

RUN htpasswd -cb /usr/share/nginx/html/rutorrent/.htpasswd username password

Билдим:

docker build -t docktorrent .

Запускаю в tmux:

docker run -it \
    -p 80:80 -p 45566:45566 -p 9527:9527/udp \
    --dns 8.8.8.8 \
    -v /data-store:/rtorrent \
    -e UPLOAD_RATE=1024 \
    docktorrent

Выгрузка torrent файлов

Отслеживаем директорию Downloads на Mac c помощью Hazel и отправляем торрент файлы в rTorrent. Кому нужно, тоже самое можно сделать в Automator.

Выгрузка торрентов с помощью Hazel и scp

Embedded script:

scp -i ~/.ssh/id_rsa_simple "$1" [email protected]:/data-store/watch/

Загрузка завершённых раздач

crontab -e

* * * * * rsync -rvz --ignore-existing -e "ssh -i $HOME/.ssh/id_rsa_simple" [email protected]:/data-store/finished/ /Volumes/The\ Dump/FLAC/

Итого

Достаточно скачать torrent, раздача автоматически начнётся и по завершению будет загружена в мак. У меня всё льётся прямо на жёсткий диск AirPort.

За месяц использования хостер меня не выгнал, если выгонит, то развернуть seedbox из Dockerfile в другом месте, не будет проблемой.


comments powered by Disqus