Сервак на Orange Pi PC с своим сайтом за сутки
- Нужна зарядка - сойдёт блок питания от сотового на 2 ампера, 5 вольт. Количество ампер зависит от подключённых устройств.
Для подключения старенького монитора я использовал переходник HDMI->VGA (слева)
- Флешка на 16гб micro SD + переходник на SD для подключения к ноуту (необязательно).
- Ethernet провод для подключения интернета (беленький на картинке)
- Радиаторы (необязательно).
- Качаем дистрибутив Debian отсюда.
- Ставим на ноут с линуксом Etcher.
- Вставляем флешку в ноут, через Etcher пишем образ на флешку.
- Вставляем флешку в сервер, подключаем блок питания.
Сервер горит красным - это питание подано. Горит зелёным - запускается.
Если хотим работать через монитор с клавиатурой, подключаем их до запуска.
Если используем без монитора и клавиатуры, тогда ищем "серый" IP сервера в роутере и подключаемся к нему по ssh (допустим через Putty) с любого домашнего компьютера.
Если устанавливали с визуальной оболочкой, допустим Armbian, то можно подключить монитор напрямки к Апельсинке и спокойно пользоваться новым компьютером. Скорость слабовата, но мелкие задачи выполнятся. Тот же ютубчик.
passwd
su - root sudo adduser <ВЫ> sudo adduser <ВЫ> sudo
- Подключаем белый IP у провайдера.
- Создаём свой домен через какой-нибудь сайт.
- Подключаем к домену свой белый IP (ждать от 2 до 24 часов).
- Настраиваем на роутере подключение через DMZ серого IP Апельсинки к белому IP. Теперь у нас кто попадёт на наш домен, летит в белый IP, который по DMZ летит в серый IP и на Апельсинку.
- Открываем WinSCP на Windows либо FileZilla на Linux. Подключаемся к серому хосту из роутера, порт по умолчанию 22, логин и пароль новые (которые ввели в sudo adduser <ВЫ>).
/etc/network/interfaces
source /etc/network/interfaces.d/* # Network is managed by Network manager #auto lo #iface lo inet loopback #allow-hotplug eth0 iface eth0 inet static address ВАШ_СЕРЫЙ_IP netmask 255.255.255.0 gateway 192.168.0.1 #auto lo #iface lo inet loopback #auto eth0 #iface eth0 inet static #address ВАШ_БЕЛЫЙ_IP #gateway 192.168.0.1 #netmask 255.255.255.0
Где 192.168.0.1 - это адрес роутера в домашней сети
sudo nano -wuc /etc/network/interfaces
Вставляем портянку текста с предыдущего пункта
CTRL + X Y Enter
- Перезагружаемся, введя в консоль reboot
Если под вашим пользователем не даёт перезагрузиться, переключаемся в root (su - root) и вводим reboot - Если хотим запускать Putty всегда залогиненным, создаём ярлык и в "Объект" пишем
C:\PuTTY\putty.exe -ssh ПОЛЬЗОВАТЕЛЬ@СЕРЫЙ_IP -pw ПАРОЛЬ
sudo apt update && sudo apt upgrade -y
sudo apt-get install apache2 sudo groupadd mgroup sudo gpasswd -a <ВЫ> mgroup sudo chown -R root:mgroup /var/www sudo chmod 775 /var/www/www
- При обращении к серверу должно вывестись стандартное окно приветствия Apache. Это значит, что на Апельсинке уже работает html и мы можем его показать пользователям.
- Ставим php7.4
sudo apt -y install lsb-release apt-transport-https ca-certificates sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list sudo apt update sudo apt -y install php7.4
Fatal error: Uncaught Error: Call to undefined function Symfony\Component\Console\mb_detect_encoding() in /usr/share/php/Symfony/Component/Console/Application.php:1178 Stack trace:
то ставим ему ту программу, которой не хватает
sudo apt-get install php7.4-mb_detect_encoding
- Apache + PHP стоят, теперь надо подключить любую БД, чтоб поднять минимальный сайт.
- Ставим плагин postgresql для PHP
sudo apt -y install php7.4-pgsql
sudo apt install postgresql sudo -u postgres psql create database basa; create user <ВЫ> with encrypted password 'ПАРОЛЬ'; grant all privileges on database basa to <ВЫ>;
Открываем файл etc\postgresql\11\main\postgresql.conf, добавляем
listen_addresses = '*' # what IP address(es) to listen on; CTRL+D sudo service postgresql restart
- Есть альтернатива phpmyadmin, называется Adminer. Сделан на PHP одним файлом, функции те же. Качаем последнюю версию отсюда.
Ставим php файл на Апельсинку куда-нибудь в /var/www/html/
Открываем <ВАШ_ДОМЕН>/adminer.php
Движок PostgreSQL
Сервер 127.0.0.1
Имя пользователя <ВЫ>
Пароль ПАРОЛЬ
База данных basa
Создаём таблицы.
Для выхода из пользователя postgres используем CTRL+D
- Настраиваем HTTPS, SSL, UFW с гайда (certbot).
sudo nano /etc/apt/sources.list
deb http://ftp.debian.org/debian buster-backports main
sudo apt update sudo apt install python-certbot-apache -t buster-backports sudo apt update sudo apt install ufw sudo ufw allow OpenSSH sudo ufw allow 'WWW' sudo apt install curl su - root sudo mkdir -p /var/www/site/html sudo chmod -R 755 /var/www/site sudo a2ensite ваш_сайт.рф.conf systemctl reload apache2 sudo a2dissite 000-default.conf systemctl reload apache2 sudo ufw allow 'WWW Full' sudo ufw delete allow 'WWW' sudo certbot --apache -d ваш_сайт.рф -d www.ваш_сайт.рф
Enter email address - вводим своё мыло, далее со всем соглашаемся
Which virtual host would you like to choose? - Выбираем 2 (где есть HTTPS)
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - Выбираем 1: No redirect
- Должен стать доступным домен через https
- Проверяем нашу "адекватность" на ssllabs. Нужно для некоторых сервисов, допустим ботов ВК или Telegram. Вставляем наш новый домен с https и проверяем статус.
Если А или А+, значит нормально. Если меньше, пробуем поднимать.
Если В и ошибка "This server supports TLS 1.0 and TLS 1.1. Grade capped to B.", то Открываем \etc\letsencrypt\options-ssl-apache.conf и вписываем:
#SSLProtocol all -SSLv2 -SSLv3 SSLProtocol all -SSLv2 -SSLv3 -TLSv1.1 -TLSv1
Эти штуки придётся менять если будете в дальнейшем настраивать VPN.
sudo reboot
service postgresql stop sudo apt-get --purge remove postgresql postgresql-* apt autoremove -y apt-get remove pgdg-keyring --purge rm -f /etc/apt/sources.list.d/pgdg.list rm -rf /var/lib/postgresql
sudo apt install mysql-client mysql-server
Package mysql-client is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source
то ставим другое + плагин для пыхи:
sudo apt install mariadb-server sudo mysql_secure_installation sudo mysql -u root -p sudo apt-get install php7.4-mysql
Проваливаемся в сам MySQL для настройки БД:
mysql> CREATE DATABASE wp_database; mysql> CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'password'; mysql> GRANT ALL PRIVILEGES ON wp_database.* TO 'wp_user'@'localhost'; mysql> FLUSH PRIVILEGES; mysql> EXIT;
Вуаля, в конфиге можно настраивать наш Wordpress по ВАШ_САЙТ/wp-admin/setup-config.php
Для меня некоторые плагины работали медленно, возможно можно было что-то улучшить, но я не стал.
Итог
Потратились мы на плату (4500), флешку(500-700), зарядку(дома всегда есть), домен(200 в год) и у нас есть свой сайт, работающий из дома. Если купить Orange PI PC Plus, будет доступен модуль Wi-Fi. Иначе можно просто докупить простенький USB Wi-Fi адаптер, чтоб не привязываться дома к проводу, но тогда нужно настраивать роутер от неожиданных отключений света или сбоев напряжения и перенастройки DMZ.
Пользуйтесь. Удачи в начинаниях!