Настраиваем Ubuntu Server под HomeServer
Вот многое уже за плечами. Ubuntu Desktop давно удален и не его месте стоит Ubuntu Server. Может возникнуть вопрос: "а зачем?" И я поспешу ответить на него - потому что тонкая настройка все равно подразумевает консоль. А "Иксы" порой только отвлекают. Да и стабильность и отпимизированность серверной оси под данные задачи много больше. Плюс некоторые проблемы desktop'а просто отпадают.
Настройка будет более сложной и длительной. Зато в конце мы получим более стабильную, зашищенную и настроенную систему. С удаленным доступом по ssh.
Появилась более свежая версия статьи
Установка Ubuntu Server
Здесь нет ничего сложного и можно разобраться самому. В крайнем случае есть статьи со скринами и полной информацией. Так же есть Вики, например про LVM. Единственное скажу Из дистрибутива лучше стоит выбрать 64битную версию, если конечно она поддерживается.
Превым делом сеть!
Если у вас стоит Router/DHCP, то скорее всего вам при установке не будет выдана настройка статического ip. Следовательно нам надо сделать это самим. Тут поможет родная поддержка. Если вкратце, то надо заменить в
/etc/network/interfaces
iface eth0 inet dhcp
на
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
и Добавить DNS сервера в /etc/resolv.conf
search mydomain.example
nameserver 192.168.0.1
nameserver 4.2.2.2
Пере загружаемся и проверяем сеть.
sudo reboot ifconfig
Удаленное управление
Тут мы подошли к самому интересному. Управление будет все тоже - через консоль. Но, теперь мы будем сидеть у себя за любимым компьютером, под любой операционной и наслаждаться прелестями копирование и вставления строк. Cтавим Open-ssh
sudo apt-get install openssh-server openssh-client
В общем настраика его может на этом и окончиться, если у вас закрыт 22 порт из вне. Но все же стоит попыхтеть и закрыть дыры, ведь если подберут пароль - "прости, прощай" Читаем здесь. После настройки, задвигаем наш сервер в дальний угол. Качаем Pytty, запускаем, бьем ip, в вкладке Translation ставим UTF-8. Сохраняем сессию, жмем Open!
Монтирование дисков
Здесь и говорить нечего, все уже написано - кликаем Переходим к установке ПО.
File Server
Для этих целей у нас есть Samba Server, о нем написано здесь.
FTP Server
Я выбрал vsFtpd + Mysql. Эта связка позволяет создвавать виртуальных пользователей, что весьма удобно. Описание установки и настройки находиться по этому адресу.
Лично я немного изменил. Ведь у нас личная система так что пусть еше и anonymous будет. Добавляем в конфиг
anonymous_enable=YES # включ anonymous (Изменяем с NO на YES!!!)
anon_upload_enable=NO # запрешаем ему загружать
anon_mkdir_write_enable=NO # и делать директории
anon_root=/home/ftp/anonymous/ # перенаправляем его в нужную директорию
Web Server
Тут совсем все просто. Мне понравилась вот эта статья. Есть только одна маленькая но очень важная заметка. надо включить один мод.
sudo a2enmod rewrite
Далее в настайках вирттуальных хостов надо сделать следуюшее в директориях
AllowOverride All
ServerAlias www.Name.com # Что бы сайти был доступен и по www..., добавте сразу после ServerName
Теперь можно в директории файлов создать .htaccess и добавить в него
ErrorDocument 404 /404.html
Этим мы уберем предательскую стандартную 404 стр. Конечно же новую делайте сами, на свой вкус. дополнительные сведения по .htaccess можно найти в нете.
Так же хорошо бы поставить Акселератор php кода, те ускоренин исполнения скриптов путём кэширования бинарного кода.
sudo apt-get install php5-xcache
sudo nano /etc/php5/conf.d/xcache.ini
xcache.size = 64M # хотя бы
xcache.var_size = 32M
xcache.count = 4 # количество ядер, в конфиге написанно как посмотреть
xcache.cacher = On
Также вы можете установить логин и пароль для управления скриптом. Пароль должен быть в md5. Чтобы правильно установить пароль, создайте в веб-директории файл test.php, и поместите в него следующую строку: < ?php echo md5(”Мой Пароль”); ?>
Для просмотра статистики использования, оценки эффективности имеется веб-интерфейс администратора. В Ubuntu он устанавливается вместе с пакетом и находится в папке /usr/share/xcache в поддиректориях admin и coverage. Скопируйте их в директория веб сервера.
Перезагрузите Apache
Torrent client
Здесь надо повозиться, но зато получаем шикарную систему с веб управлением. кликаем
Зашита
Fail2ban
Порыскав в сети я наткнулся на замечательную прогу. Работает просто - смотрит логи, и банит по iptables Ботов подбираюших пароли к ssh, ftp. Ставить обязательно!
sudo apt-get install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.cp # дублируем конфиг
sudo gedit /etc/fail2ban/jail.conf # конфигим
sudo /etc/init.d/fail2ban restart
В настройках ничего военного нет. В начале файла. ignoreip - Добавляем ip через пробел, которые будут игнорироваться (свою статику например). bantime - время бана в секундах. maxretry - количесво попыток входа. Это все весчи, которые будут подставляться по дефолту. Так же я нашел в логах findtime - похоже это время между проверками логов, но я нигде не нашел подтверждение этого. Изначально стоит на 600. Если не боитесь можете поменять. Дальше меняем нужные сервисы с false на true. Также можно вставлять для каждого в отдельности параметры бана.
Ufw
Ёше стоит задумать о защите портов. Для этого есть программа ufw, она уже по умолчанию установлена. Требуется только, включение, настройка, перезагрузка.
sudo ufw enable # включаем
sudo ufw default deny # запрешаем все по умолчанию
sudo ufw allow [port] # разрешить порт
sudo ufw allow [присет] # Присеты смотри так: sudo ufw app list
sudo ufw delete allow [port] # удалить предыдущею запись
sudo ufw allow 80/tcp # разрешить порт 80 tcp
sudo ufw deny from [ip address] # запрет адреса
sudo ufw allow from 192.168.0.0/24 to any port 22 # разрешение с некоторых ip
sudo ufw status # выведет все настойки
man ufw # хелп
О автоматизации
Речь пойдет все о тех же скриптах, написанных на языке bash/sh. Это штука может очень облегчать работу. И первое где это можно и нужно использовать, это backup баз данных. Конечно лучше всего написать его самому, но это не всегда возможно. Мой скрипт еше полностью не дописан и сильно оптимизирован под мои задачи. Поэтому я предлагаю воспользоваться этим. Он правдо на php. Но это ничего не меняет.
Но как понимаете, одним скриптом все не оканчивается. Тоже резервное копирование файлом и многое другое. Для этого нужно знать немного программирование, и на этом ресурсе очень хорошо описан bash в примерах.
Еше отличный пример многогранности скриптов можно посмотреть здесь.
Послесловие
Все выше написанное, это всего лишь опыт начинаюшего ubuntu-вода, полученный в настройке своего домашнего сервера. Если у вас есть какие то поправки или идеи, я с огромным удовольствием их послушаю!