Удобным считаю сервер без GUI, практически все конфигурирование осуществляется по сети через SSH, поэтому базовая установка ограничена пакетами base, grub-bios,(base-devel для установки из AUR), далее с этого момента.
Первым делом отрешимся от сервера на чердаке (в кладовке), добавив в систему файловый менеджер и SSH-сервер:
pacman -Sy && pacman -S --noconfirm mc openssh
systemctl enable sshd && systemctl start sshd
Настройка ssh для домашней сетиПоказать
Большинство из устройств домашней сети работают под управлением Linux, сюда же отношу и Android-устройства: сервер, рабочий ПК и ноубук - Arch, несколько роутеров исполняющих различные функции под OpenWRT, смарфоны, планшеты, тв-пк - Android. Для всех перечисленных платформ доступны SSH-сервер и клиент. Кроме доступа к консоли устройства, SSH обладает еще рядом несомненных преимуществ - возможностью проксирования, пробросом портов, графической оболочки и доступом к удаленной файловой системе посредством sftp. Для домашней сети удобна безпарольная аутентификация по ключу. Так, воспользовавшись на домашнем ПК утилитой ssh-keygen генерируем пару ключей, затем ssh-copi-id root@myserver - копирует мой ключ на серер (я делаю это в переборе практически для всех устройств дома кроме сматрфона и планшета, которые могут "потеряться"). Далее создаю для этих устройств файл config (Так повелось, что домен домашней сети по предложению OenWRT у меня lan, то есть сервер дразнится, например, server.lan).
touch ~/.ssh/config и заполняю примерно так:
Вдохновила эта статья на Хабре
touch ~/.ssh/config и заполняю примерно так:
и копирую этот файл на необходимые устройства, устанавливая права доступа на запись и чтение только для владельца файла на данном устройстве. Теперь могу под Linux-Android - пользоваться безпарольной аутенификацией, подключаясь просто ssh server. Так же становится доступным из под Linux sftp-доступ ко всем девайсам, где запущен sshd. Большой плюс SSH в том, что мне не нужно открывать на роутере никаких портов во внешний мир ,кроме ssh, который я предлагаю для большей безопасности установить отличным от стандартного 22. Теперь для подключения извне к домашним сервисам я могу просто пробросить порты, получая при этом защищенное подключение из любой точки мира, пользуясь даже общественными сетями. Конечно ресурсов домашнего роутера в данном случае не хватит на, например, просмотр FullHD- видео из домашнего архива, но в остальном все окHost *.lan
User root
Compression yes
ControlMaster yes
PasswordAuthentication no
Host server
Hostname server.lan
Host router
Hostname router.lan
Host pc
Hostname pc.lan
Host tvbox
Hostname tvbox.lan
User android
Port 2222
Host camview
Hostname camview.lan
Host phone
Hostname phone.lan

Вдохновила эта статья на Хабре
Теперь при закрытии крышки ноутбука, он не будет уходить в гибернацию.#Ищем строку HandleLidSwitch, раскоментируем и правим
HandleLidSwitch=ignore
Далее, переместившись в уютное кресло, можно работать с сервером через ssh/sftp. (Для Windows-пользователей PuTTY, FileZilla).
Собственно, для запуска Majordomo необходимы только Apache, PHP, MySQL. Разумным считаю добавить сразу Phpmyadmin.
Настраиваем /etc/php/php.ini. Здесь есть скользкий момент, или запускать PHP в Safe Mode, как он настроен изначально, для нормальной работы Majordomo в этом случае нужно будет искать папки в которых живут важные для работы скрипты, которые в Safe Mode не работают (по себе знаю что такими функциями точно являются обновление Majordomo и установка программ из маркета дополнений), либо, если это не критично для вас, поступить как я и убрать все настройки опции open_basedir :pacman -S --noconfirm mariadb php php-apache php-mcrypt php-gd apache phpmyadmin #устанавливаем
systemctl enable httpd mysqld && systemctl start mysqld #даем право на старт при загрузке системы Апачу и Мускулу, запускаем последний
mysql_secure_installation #устанавливаем пароль root'а к mysql
systemctl restart mysqld
Редактируем /etc/httpd/conf/httpd.conf Настройки приведены для Apache 2.4 и выше :short_open_tag = On # важно! majordomo
open_basedir = # !!!ВНИМАНИЕ!!!Если запуск PHP в Safe Mode не нужен, правим эту опцию так, иначе , смотри чуть выше
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE # важно! majordomo
# раскоментируем следующие модули php
extension=gd.so # для majordomo
extension=iconv.so # важно! majordomo
extension=mcrypt.so # для phpmyadmin
extension=mysqli.so # для phpmyadmin
extension=mysql.so # для majordomo, phpmyadmin
extension=openssl.so # важно! majordomo
Добавляем в /etc/httpd/conf/mime.types :# В конце блока LoadModule добавляем
LoadModule php5_module modules/libphp5.so
#Проверяем, чтобы был раскоментирован
LoadModule rewrite_module modules/mod_rewrite.so # Важно для обработки .htaccess Majordomo
#Для нормального взаимодействия Apache 2.4.x и PHP меняем
#LoadModule mpm_event_module modules/mod_mpm_event.so на
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
# В секции <Directory "/srv/http"> меняем
AllowOverride All #для majordomo
Require all granted #для majordomo
# В конце файла добавляем
Include conf/extra/php5_module.conf
Include conf/extra/httpd-phpmyadmin.conf # для phpmyadmin
application/x-httpd-php php php5
Проверяем конфиг апача:#Создаем conf файл для phpmyadmin
touch /etc/httpd/conf/extra/httpd-phpmyadmin.conf
#Заполняем его следующим содержимым в любимом редакторе
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">
DirectoryIndex index.html index.php
AllowOverride All
Options FollowSymLinks
Require all granted
</Directory>
Устанавливаем Majordomo :apachectl -S
Создаем базу для Majordomo и импортируем в нее таблицы из дампа :cd ~
curl -O http://smartliving.ru/download/_majordo ... 70b.tar.gz
tar xfz _majordomo_linux_070b.tar.gz
chown -R http:http html
#!!!!Если хотим использовать базовую версию с сайта, далее идем таким путем:
mv html/.htaccess /srv/http && mv html/* /srv/http && rm -R html
#!!!!Если хотим быть на передовой, можем использовать версию с git:
pacman -S --noconfirm git
git clone git://github.com/sergejey/majordomo /srv/http
mkdir /srv/http/cached
mv html/config.php /srv/http && rm -R html
chown -R http:http /srv/http
#далее, для обновления системы в любой момент времени можем сделать:
cd /srv/http
git pull
chown -R http:http /srv/http
systemctl restart majordomo httpd
Редактируем /srv/http/config.php,как минимум вписываем пароль к mysql .mysql -u root -p # входим с паролем созданным ранее
MariaDB [(none)]> CREATE DATABASE db_terminal;
MariaDB [(none)]> exit
mysql -u root -p db_terminal < ~/db_terminal.sql
rm ~/db_terminal.sql ~/_majordomo_linux_070b.tar.gz
Создаем юнит для запуска скриптов Majordomo :
Просмотреть лог выполнения скриптов Majordomo можно командой :touch /etc/systemd/system/majordomo.service
# И заполняем его
[Unit]
Description=Majordomo Service
After=mysql.service
[Service]
User=http
ExecStart=/usr/bin/php /srv/http/cycle.php
Restart=always
[Install]
WantedBy=multi-user.target
# затем выполняем
systemctl enable majordomo && systemctl start httpd majordomo
Если хотим подарить Алисе голос :systemctl status majordomo
Установка Majordomo на Archlinux завершена, phpmyadmin доступен по http://IP-сервера/phpmyadmin .pacman -S --noconfirm alsa-utils mplayer
# Настраиваем громкость
alsamixer
# Даем голос
gpasswd -a http audio
Автоочистка логов mysqlПоказать
Для автоочистки бинарных логов mysql внести в /etc/mysql/my.cnf:
[mysqld] # В этот блок
expire_logs_days = 7 # вносим строку , вместо 7 - нужное количество дней
Простой перенос баз mysqlПоказать
Если, по какой-либо причине, есть необходимость перенести БД в другое место, на другой носитель, - просто создаем символическую ссылку:
systemctl stop mysqld
mv /var/lib/mysql /куда-хочу-перенести/mysql
ln -s /куда-перенес/mysql /var/lib/mysql
systemctl start mysqld
4 и более камер в motionПоказать
При необходимости работать более чем с 3-мя камерами в motion, создаем и запускаем копию демона:
Правим при необходимости /etc/motion2/motion.conf, прописываем пути к thread-файлам, наполняем сами thread-файлы и правим файл настроек юнита systemd /usr/lib/systemd/system/motion2.service:mkdir /etc/motion2 && cp /etc/motion/motion.conf /etc/motion2 && cp /usr/lib/systemd/system/motion.service /usr/lib/systemd/system/motion2.service;
#Если нужно, создаем новые thread.conf - файлы, не забываем прописать их в /etc/motion2/motion.conf
touch /etc/motion2/thread{1..3}.conf
Управление:
[Unit]
Description=Motion daemon
After=local-fs.target
[Service]
EnviromentFile=/etc/motion2/motion.conf
ExecStart=/usr/bin/motion2 -c /etc/motion2/motion.conf
Type=forking
#StandardOutput=null
StandardError=null
[Install]
WantedBy=multi-user.target
Если камер более 6-ти , соответственно создаем 3-ю копию демона и т.д.systemctl enable motion2 #разрешаем автозапуск
systectl start motion2 #запускаем
systemctl restart motion2 #перезапкскаем
systemctl stop motion2 #останавливаем
systemctl status motion2 #смотрим статус и логи
Простое проксирование вывода motion и других приблуд apache'мПоказать
При использовании motion, для удобства работы вне домашней сети, можно настроить Apache проксировать его вывод.
Нахожу удобным для себя проксировать инерфейс веб-управления kodi(xbmc) и transmission, которые активно используются в домашней сети. Выше писал, для домашней сети роутер использует домен lan. kodi живет на паре домашних android tv-box'ов, transmission и motion работают на сервере.
Редактируем /etc/httpd/conf/httpd.conf Настройки приведены для Apache 2.4 и выше :
Нахожу удобным для себя проксировать инерфейс веб-управления kodi(xbmc) и transmission, которые активно используются в домашней сети. Выше писал, для домашней сети роутер использует домен lan. kodi живет на паре домашних android tv-box'ов, transmission и motion работают на сервере.
Редактируем /etc/httpd/conf/httpd.conf Настройки приведены для Apache 2.4 и выше :
Далее создаем этот самый proxy_module.conf:#Должна быть раскомментирована строка
LoadModule proxy_module modules/mod_proxy.so
#Добавляем в конце файла строку
Include conf/extra/proxy_module.conf
и наполняем содержимым:touch /etc/httpd/conf/extra/proxy_module.conf
<IfModule proxy_module>
ProxyRequests Off
<Proxy *>
AddDefaultCharset off
Require all granted
</Proxy>
ProxyVia On
<Location /motion/kam>
ProxyPass http://127.0.0.1:8081
#http://127.0.0.1:8081, берем из нашего /etc/motion/motion.conf, если камера одна
#или из /etc/motion/thtread1.conf,- если камер несколько
#добавляем аналогичные секции Location по аналогии из thread2 - threadN - для всех наших камер.
</Location>
<Location /tvbox> #Для проксирования веб-интефеса управления kodi(xbmc)
ProxyPass http://tvbox.lan:8080/
ProxyPassReverse http://tvbox.lan:8080/
</Location>
<Location /tvbox/jsonrpc>
ProxyPass http://tvbox.lan:8080/jsonrpc
ProxyPassReverse http://tvbox.lan:8080/jsonrpc
</Location>
<Location /jsonrpc>
ProxyPass http://tvbox.lan:8080/jsonrpc
ProxyPassReverse http://tvbox.lan:8080/jsonrpc
</Location>
<Location /transmission>
ProxyPass http://127.0.0.1:9091/transmission
ProxyPassReverse http://127.0.0.1:9091/transmission
</Location>
</IfModule>
Синхронизация времени в доманей сети посредством NTPПоказать
Для синхронизации времени в домашней сети удобно использовать локальный NTP-сервер. Таким образом мы уменьшаем нагрузку на сервера точного времени, сокращая в разы количество запросов к ним, и даже в отсутствии интернета можем быть уверенны в синхронности времени на всех поддерживающих NTP устройствах. Роль локального NTP-сервера у меня выполняет роутер, прошитый OpenWRT.(Он всегда в сети, не загружен как раньше файлообменом и другими видами спорта).Соответствующая статья по настройке. Для рутованных Android-клиентов прекрасно подойдет ClockSync. Для сервера, домашнего ПК и бука под Archlinux, достаточно задействовать встроенный в systemd сервис:
timedatectl set-ntp true и отредактировать файл /etc/systemd/timesyncd.conf с поправкой на ip своего локального ntp-сервера:
Для желающих сделать NTP-сервером ПК с MD - вики по настройке..
timedatectl set-ntp true и отредактировать файл /etc/systemd/timesyncd.conf с поправкой на ip своего локального ntp-сервера:
Затем перезапускаем сервис: systemctl restart systemd-timesyncd[Time]
NTP=192.168.1.1
FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
Для желающих сделать NTP-сервером ПК с MD - вики по настройке..