Linux сервер для закачки

Ubuntu Server на домашнем компьютере. Раздадим интернет, скачаем torrent

В последнее время все больше и больше входят в моду домашние сервера, используемые для хранения контента, закачки торрентов, да и просто для раздачи интернета. Не так давно, воодушевившись обзорами домашних серверов, из подручных средств был собран домашний сервер:

Жесткий диск: 500Gb
Материнская плата на 478 сокете
Процессор: Pentium 4 — 2.6Ghz HT
Все это в стареньком корпусе…

Итак, что мы имеем:
•Домашний сервер
•Городскую локальную сеть, выдающую интернет посредством VPN соединения

Задачи:

Использовать сервер как средство хранения контента
Возможность скачки торрентов
Раздача интернета всей семье посредством VPN

Настройка VPN подключения.

Первое, с чем я столкнулся после сборки сервера, был выбор операционной системы. После долгих выборов глаз пал на Ubuntu Server.
После успешной установки системы, первым делом был установлен SSH сервер.
Далее, все остальные действия проводились посредством Putty
Итак, для начала, подымем VPN соединение с интернетом на сервере.
Для начала нам нужно установить пакет pptp-linux, который к моему удивлению, не был найден на установочном диске.
Скачиваем его вручную, и инсталлируем его на сервере.
$ sudo dpkg -i pptp-linux_1.7.2-1_i386.deb

Далее, правим файл /etc/ppp/chap-secrets и задаем в нем логин (LOGIN), пароль(PASSWORD), и название подключения(PROVIDER_NAME)

LOGIN PROVIDER_NAME PASSWORD *

Далее, создаем файл /etc/ppp/peers/PROVIDER_NAME и вписываем в него, следующие строки:
remotename PROVIDER_NAME
pty «pptp —loglevel 1 PROVIDER_VPN_ADRESS —nolaunchpppd»
name LOGIN
noauth
nodetach
lock
defaultroute
replacedefaultroute
noccp

Где PROVIDER_VPN_ADRESS — адрес VPN сервера провайдера, LOGIN — ваш логин
Итак, давайте теперь протестируем наше VPN соединение,

$sudo pon PROVIDER_NAME

Если все прошло удачно, вы увидите полученные IP адреса, а так же можете проверить доступность интернета пингом, например, Яндекса 🙂

Если все прошло удачно, добавляем следующую строчку в файл /etc/rc.local.

Теперь, интернет, будет у нас подключаться, когда мы будем включать/перезагружать сервер.

Установка VPN сервера для раздачи интернета.

После успешного подключения интернета нужно установить VPN сервер, и обеспечить подключение к нему членам семьи 🙂
В качестве VPN сервера был выбран PPTP-сервер.
Итак, начнем. Для начала установим PPTP сервер.

$sudo apt-get install ppp pptpd

Далее приступаем к настройке. Первым делом открываем файл /etc/pptpd.conf и дописываем в конец следующие строки:
# IP-адрес сервера в локальной сети
localip 10.10.3.231

# Диапазон адресов для клиентов PPTP-сервера
remoteip 172.22.1.1-5

Следующим шагом дописываем в файл /etc/ppp/pptpd-options следующие строчки:
# требуем авторизацию у клиентов
auth

# Используем шифрование
require-mppe

И теперь, самое главное, редактируем файл /etc/ppp/chap-secrets и дописываем строки вида:
LOGIN pptpd PASSWORD «172.22.1.1»
LOGIN2 pptpd PASSWORD2 «172.22.1.2»

Примечание: Если пользователь должен динамически получать IP-адрес из диапазона remoteip в pptpd.conf, строчка должна выглядеть так:

LOGIN pptpd PASSWORD «*»

Далее, добавляем несколько команд в /etc/rc.local:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo «1» > /proc/sys/net/ipv4/ip_forward

После этого, перезагружаем сервер:

Настройка клиентских машин проста. Создаем VPN соединения, где указываем IP сервера и логин/пароль, прописанный в /etc/ppp/chap-secrets.

Установка rTorrent и wTorrent

Первым делом, установим необходимые нам пакеты:
$sudo apt-get install apache2 php5 php5-xmlrpc rtorrent php5-sqlite sqlite libxmlrpc-c3 libapache2-mod-scgi screen subversion

Далее исправим конфиг апача,

$sudo nano /etc/apache2/sites-available/default

Перед строкой добавляем 2 строчки:

LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so
SCGIMount /RPC2 127.0.0.1:5000

$sudo /etc/init.d/apache2 restart

Далее создадим нового пользователя «torrent». Это пользователь, от имени которого будет автоматически запускаться демон RTorrent.

sudo useradd torrent -p password -d /home/torrent

Далее, правим конфиг rTorrent

$sudo nano /home/torrent/.rtorrent.rc

Пример моего конфига:

port_range = 6925-6925
directory = /home/torrent/torrents/download/
session = /home/torrent/torrents/session/
schedule = watch_directory,5,5,load_start=/home/torrent/torrents/watch/*.torrent
scgi_port = 127.0.0.1:5000
hash_read_ahead = 32
hash_max_tries = 1
hash_interval = 1

Более подробную справку по параметрам rTorrent, смотрите тут

Далее, скачиваем скрипт запуска

$sudo wget libtorrent.rakshasa.no/attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh?format=raw -O /etc/init.d/rtorrent

Теперь немного поправим конфиг

$sudo nano /etc/init.d/rtorrent

В файле ищем строку user=«user» и меняем user на torrent в моём случае (здесь это имя пользователя, от которого будет запускаться RTorrent, то что было в команде useradd)

Читайте также:  Microsoft windows memory dump

Последний штрих конфигурирования rTorrent — добавление скрипта в автозапуск:

$sudo chmod +x /etc/init.d/rtorrent
$sudo update-rc.d rtorrent defaults

Теперь стартуем наш торрент:

$sudo /etc/init.d/rtorrent start

Далее осталось дело за малым — установить WTorrent:

$ cd /var/www
$ sudo svn co svn://wtorrent-project.org/repos/trunk/wtorrent

Теперь в браузере заходим ip-компьютера/wtorrent/install.php и устанавливаем скрипт.
Пробуем запустить скрипт в браузере. Первое с чем я столкнулся, это ошибка добавления торрента, через форму добавления.
Происходила ошибка — не правильный торрент файл. Решение проблемы, расписано тут

Установка FTP сервера

В качестве ftp сервера был выбран vsftpd.

$sudo apt-get install vsftpd

Редактируем конфигурацию:

$sudo nano /etc/vsftpd.conf

.
write_enable=YES
anonymous_enable=NO
local_enable=YES
.

Теперь перезапускаем vsftpd:

Теперь последний штрих в нашей работе, перезагружаем компьютер.

Заключение

Я надеюсь, что данная статья пригодится читателям хабра, собравшимся собрать свой сервер в домашних условиях 🙂
Спасибо за внимание. Удачи!

Статья была опубликована по просьбе Tanto, спасибо за инвайт хабраюзеру AusTiN! у которого пока, к сожалению, нет аккаунта на хабре 🙁

Источник

Домашний сервер. Часть 2. FTP, Samba и rTorrent

Пришло время организовывать файловое хранилище, как внутри сети так и снаружи. Данная статья является продолжением первой части, посвященной настройки WiFi роутера на Вашем домашнем сервере. Все жесткие диски с Вашего домашнего компьютера(кроме системного) можно перенести на сервер, поскольку скорость передачи данный колеблется в районе 10-20 мегабайт в секунду [данный параметр еще и очень сильно зависит от модели Вашего жесткого диска], да и кстати, давно уже пора для системного диска покупать SSD накопители.

FTP Server.
Существует множество ftp серверов для linux, много хороших, много плохих, но есть лучший [естественно, что это субъективное мнение, и лучший он для меня] и это vsftpd. Его мы и будем рассматривать.
Скачать его можно из стандартных репозитариев OpenSUSE, выполнив в терминале команду:

Теперь перейдем к описанию. Это консольный ftp server, у него нет GUI [графическая оболочка], поэтому вся настройка происходит в одном единственном конфиге, по адресу /etc/vsftpd.conf.
Вот пример рабочего конфига:

В приведенном выше конфиге нет заморочек для распределения прав доступа отдельным пользователям, отдельных папок. Всё довольно просто и лаконично, настроил один раз и пользуешься [пользуются]. Vsftpd был выбран, потому что у него лучшая система настройки прав доступа, которая подразделяется на два вида: внутренняя, системная аутентификация и внешняя, с отдельным конфигурационным файлом для распределения прав доступа, но при этом, пользователи всё также берутся из системы.

В данном примере и пользователи, и распределение прав доступа этих самых пользователей берется из системы, дополнительный конфиг-файл не используется.

Рисунок 1. Выставление прав
На этом собственно всё.

Samba.
Хотите всегда иметь под рукой файловое хранилище всех коллекций и всего прочего с ноутбука, с домашнего компьютера, с телефона, с планшета? Поехали.

Изначально, при стандартной установке системы OpenSUSE всё что нужно для установки и настройки samba на сервере уже предустановлено. Поэтому перейдем непосредственно к настройке. Поскольку доступ из под ОС Windows в качестве «Подключения сетевого диска» будет доступен только внутри Вашей локальной сети [для интернета есть ftp сервер, да и к тому же, вывешивать самбу в интернет крайне не безопасно, а мы же, — «ЗА СЕКЬЮРНОСТЬ. УРА!»] поэтому настройки будут крайне банальны и просты в понимании. Есть два [известных мне и адекватных на мой взгляд] настройки самбы, это через, всё тот самый, конфигурационный файл и при помощи утилиты — WebMin. Это дико-крутая штука, особенно для тех, кто не любит ковырять конфиги [но и здесь есть свои ньюансы]. В данной статье не будем останавливаться на средствах «для ленивых«, поэтому продолжаем. Мы будем рассматривать рабочий конфиг файл. Находится он по адресу: /etc/samba/smb.conf. Вот он:

Также, дополнительную настройку можно выполнить через встроенный в YaST GUI samba.

Того пользователя, что мы указали в самом начале конфига, в данном примере это пользователь nobody, необходимо создать непосредственно в системе. Задать ему необходимые права (дома, имеет смысл поставить полные права, на создание, удаление, редактирование всех файлов и папок (т.е. права 777). Также, если Вы столкнетесь с ситуацией, когда по какой-то причине станет невозможным удаление/создание файлов в какой-либо из папок на сервере, то выполните команду:

Читайте также:  Windows iso image tool

Разберем её, на всякий случай:
chmod — команда установки прав.
777 — собственно права, в буквенном обозначении означают rwx, rwx, rwx — права чтение, запись, выполнение для владельца, группы(где состоит владелец), всех.
-R — ключ рекурсии, для того чтобы команда выполнилась не только для той папки(и файлов, находящихся в ней), которую Вы указали в /path, но и для всех под-папок и файлов в них тоже.
/path — путь до папки, на которую необходимо установить права. Аналогичная команда соответствует FTP серверу, если возникли похожие проблемы. Да, и надо оговориться, что если возникают подобные проблемы, то скорей всего проблема кроется в пользователях созданных в системе, а точнее в правах, выданных на использование их домашних директорий.

rTorrent.
Полу-автоматизированный торрент клиент.
На самом деле, это обычный торрент клиент, но, возможности настройки которого, очень богаты разнообразием. Сейчас мы с Вами разберём одну очень полезную функцию данного клиента. Представьте, Вы уже настроили самбу на Вашем домашнем сервере, файловое хранилище, находящееся на сервере подключена к Вашему компьютеру как Сетевой Диск, Вы открываете Ваш сетевой диск, открываете папку torrents, там открываете папку music и перемещаете туда все торрент файлы с музыкой, которые Вы хотите скачать и… всё, ложитесь спать. На утро уже будут скачены и проверены хеши всех торрентов, что Вы туда положили (тут конечно всё зависит от того сколько торрентов Вы хотите скачать, какой у них вес и какова ширина Вашего интернет канала). Нравится? Вот и я балдею уже как пол года, от этой функции.
Давайте разбираться.
Вам надо установить rtorrent, выполняем следующую команду в терминале:

После того, как Вы скачали и установили торрент-клиент rtorrent, необходимо произвести настройку клиента. Настройка программы осуществляется при помощи конфигурационного файла .rtorrent.rc, размещаемого в домашнем каталоге пользователя. (По умолчанию файл .rtorrent.rc отсутствует. Его нужно создавать самостоятельно. Привожу пример с подробными комментариями рабочего конфига:


Рисунок 2. Главное окно программы rTorrent

Собственно и все. Далее хитрый приём, — открываем консоль и пишем(можно и по ssh зайти на сервер):
screen rtorrent
Далее, в терминале откроется торрент-клиент, там же Вы его можете настроить и отладить дополнительно. Теперь нажимаем волшебные комбинации клавиш Ctrl+A затем Ctrl+D и консоль радостно Вас оповестит, что:
[detached]


Рисунок 3. «Заскринивание» процесса программы rTorrent.

Это говорит о том, что процесс Вашего торрент-клиента «закринин», то есть выполняется, но его при этом не видно. Для тех, адептов, кому всегда, всё интересно, может прочесть вот здесь про данную утилиту обременять голову такими вещами (хотя, они очень интересные и познавательные, и применяются часто) принудительно я не хочу.
Если Вам понадобилось заного открыть клиент, пишем:

ВАЖНО: Если Вы хотите запускать торрент-клиент под рутом(root, т.е. через команду sudo) то, необходимо конфиг файл создавать в корневом каталоге пользователя root, а также, screen -r необходимо выполнять также, под тем же пользователем, под которым Вы ее «заскринили».
Таким образом, у Вас в фоне всегда будет висеть торрент-клиент, который будет качать и раздавать ровно столько, сколько будет работать Ваш сервер.

На этой «важной» ноте, я хочу закончить данную статью. Спасибо за внимание, и да, пользуйтесь поисковиком Google, он молодец!

Если ошибся топиком, подскажите куда перенести.

Источник

Бездисковая загрузка по сети и жизнь после нее

История

Теория

По сути, для того, чтобы система загрузилась ей необходимо 3 компонента — ядро, начальное окружение initramfs и корневой каталог, в котором система будет работать.

Практика

Все действия проводятся на машине с ubuntu precise.

Для начала настроим PXE. Мануалов на эту тему уйма, поэтому я расскажу только самую суть.
Ставим ваш любимый dhcp сервер, например isc-dhcp-server, который будет раздавать машинкам ip адреса и указывать путь к файлу pxelinux.0, который будет отдавать tftp сервер (tftp-hpa или же atftp).

Пример конфига dhcp сервера. В примере pxe-сервер находится по адресу 10.0.0.1.

Читайте также:  Настройка режимов работы windows

Запускаем tftp сервер (в ubuntu он имеет init-скрипт, но вполне вероятно, что вам придется запускать его и через inetd/xinetd).
Проверяем работоспособность. Кладем файл в каталог /var/lib/tftpboot и пробуем стянуть его tftp клиентом.

В принципе неважно, где вы возьмете файл pxelinux.0, так как он является просто начальным загрузчиком, в который мы передаем то, что надо грузить дальше.
Вы можете сделать красивую менюшку в загрузчике, но сейчас нам это не нужно, поэтому мой pxelinux.cfg/default выглядит так

rootfs

Образ rootfs собираем через debootstrap, чрутимся в него и ставим необходимые программы. Настраиваем сеть, hostname, фаервол и прочее, чем больше сделаем настроек, тем больше будет образ. Главное не забудьте сменить пароль на рута.

С нашим минимальным набором система получилась весом 200Мб.

Initramfs

В этом примере мы будем забирать образ корневой фс с веб-сервера, расположенного на нашем сервере сетевой загрузки, то есть на 10.0.0.1. Решение было таким просто потому, что в нашем initramfs была утилита wget. Чтобы не тянуть большой объем данных по сети, мы решили сжать образ. Это можно было бы сделать и обычным tar, но можно попробовать squashfs, тем более, что обычно в initramfs tar не встроен, с другой стороны, ничего не мешает его туда добавить.

Squashfs
Squashfs — это сжимающая файловая система, которая включена в ядро с версии 2.6.29. С ее помощью можно заархивировать каталог, примонтировать на loop устройство и читать с него, для записи же необходимо провести процедуру добавления файлов в архив. Так как при обращении к squashfs, вы читаете из архива, то это дает дополнительную нагрузку на cpu.

Для более эфферктивного сжатия вы можете использовать опцию -comp, чтобы установить тип сжатия, по умолчанию используется gzip.

Далее надо научить init из initramfs забирать образ корня и помещать его в оперативную память.

init в initramfs — это скрипт на sh, который производит разбор опций из cmdline, монтирует фс, делает switch_root и запускает гланый init-процесс системы.
Воспользуемся этим и допишем свои опции для cmdline. Напишем скрипт ram, который будет вызываться при значении опции boot=ram.

Через параметр rooturl можно указывать откуда качать образ корневой фс. Для работы со squashfs необходимо подгрузить ее модуль в ядро. Указываем в /etc/initramfs-tools/initramfs.conf BOOT=ram и пересобираем initramfs

Включаем машинку, на которой будем тестировать, и смотрим на происходящее. После успешной загрузки мы получили бездисковую систему, которая занимает в памяти около 300Мб, при этом мы может писать в нее, но после ребута, система вернется в свое первоначальное состояние.

В это примере, мы использовали squashfs просто для сжатия образа, но почему бы нам не попробовать примонтировать корневой раздел в squashfs и не посмотреть, что получится? Меняем наш скрипт, в функции do_rammount() оставляем только монтирование squashfs.

Пересобираем initramfs, запускаем, смотрим. Система загружается в режиме ro, но зато занимает в памяти всего около 180Мб.
В каких-то случаях монтирование в режиме ro это хорошо, но нас это не устраивает, но и просто так тратить оперативную память нам тоже не хочется. Выход же был найден при помощи Aufs.

Aufs
Aufs позволяет делать каскадно-объединённое монтирование файловых систем — одну в режиме только на чтение, а вторую в rw. Работает она в режиме copy-on-write, то есть все изменения записываются на rw систему и после этого чтение производится с нее же.
Опять переписываем наш скрипт.
В фукнцию mountroot() добавляем

А фукнцию do_rammount() приводим к следующему виду:

Пересобираем initramfs, запускаем, смотрим. Система занимает в памяти 181Мб, при этом мы можем менять ее, писать, читать. Все изменения хранятся отдельно в /mnt/rw, а сама система хранится в /mnt/ro.

В результате мы получили систему, которая грузится по сети, занимает небольшой объем в памяти, при этом после каждой перезагрузки пропадают все изменения (поэтому надо заранее собирать все нужные продукты жизнедеятельности системы в надежное место).

Все вышеперечисленные способы имеют право на жизнь. Надеюсь, что эта информация вам пригодится, а мне же будет интересно почитать/послушать ваши комментарии.
Спасибо за внимание.

Источник

Оцените статью