Merge branch 'master' of ssh://git.da2001.ru:2222/da2001/notes
commit
335453e1d4
|
@ -5,29 +5,14 @@
|
||||||
1. Обеспечить подключение к хранилищу резервных копий по SSH на основе ключа пользователю root, т.к. скрипт будет выполняться от его имени
|
1. Обеспечить подключение к хранилищу резервных копий по SSH на основе ключа пользователю root, т.к. скрипт будет выполняться от его имени
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
root@host-usb:~ $ ssh-keygen
|
root@opisd:~# ssh-keygen
|
||||||
root@host-usb:~ $ ssh-copy-id da2001@nas.dav.lan
|
root@opisd:~# ssh-copy-id da2001@nas.dav.lan
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Создать конфигурационный файл EEPROM, который вернёт загрузку на SD
|
1. Подготовить скрипт, который выполнит создание образа eMMC и передаст его по SSH в сетевое хранилище
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pi@host-usb:~ $ sudo mkdir /opt/backup_rpi && sudo vim /opt/backup_rpi/sd_eeprom.conf
|
da2001@opisd:~$ sudo vim /opt/backup_opi/opi_backup.sh
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pi@host-usb:~ $ cat /opt/backup_rpi/sd_eeprom.conf
|
|
||||||
[all]
|
|
||||||
BOOT_UART=0
|
|
||||||
WAKE_ON_GPIO=1
|
|
||||||
POWER_OFF_ON_HALT=0
|
|
||||||
BOOT_ORDER=0xf1
|
|
||||||
```
|
|
||||||
|
|
||||||
6. Подготовить основной скрипт, который выполнит создание образа SD-карты и передаст его по SSH в сетевое хранилище
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pi@host-usb:~ $ sudo vim /opt/backup_rpi/rpi_backup.sh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -35,14 +20,10 @@ pi@host-usb:~ $ sudo vim /opt/backup_rpi/rpi_backup.sh
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
|
|
||||||
# Скрипт создаёт образ SD-карты Raspberry PI и отправляет его на удалённый сервер по SSH,
|
# Скрипт создаёт образ eMMC OrangePI 5 Plus и отправляет его на удалённый сервер по SSH,
|
||||||
# при этом на удалённом сервере происходит сжатие образа для экономии места.
|
# при этом на удалённом сервере происходит сжатие образа для экономии места.
|
||||||
# Сжатие происходит на удалённом сервере, чтобы минимизировать операции записи на Flash память,
|
# Сжатие происходит на удалённом сервере, чтобы минимизировать операции записи на Flash память,
|
||||||
# с которой произведена загрузка RPI.
|
# с которой произведена загрузка OrangePI.
|
||||||
# После создания образа, происходит обновление конфигурации EEPROM Raspberry PI для загрузки с SD карты.
|
|
||||||
# В директории с этим скриптом должен находится конфигурационный файл EEPROM - $eeprom_conf
|
|
||||||
|
|
||||||
# Для корректной работы скрипта, EEPROM RPI должен поддерживать режим переключения загрузки SD<=>USB.
|
|
||||||
|
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
|
|
||||||
|
@ -56,28 +37,16 @@ fi
|
||||||
server=da2001@nas.dav.lan
|
server=da2001@nas.dav.lan
|
||||||
|
|
||||||
# Путь сохранения на удалённом сервре
|
# Путь сохранения на удалённом сервре
|
||||||
remote_path=/mnt/main/data/Backup/bastion_rpi
|
remote_path=/mnt/main/data/Backup/opi1
|
||||||
|
|
||||||
# Директория, в которой хранится конфигурационный файл EEPROM
|
# Необходимо синхронизировать время
|
||||||
eeprom_conf_path=/opt/backup_rpi
|
chronyc -a makestep
|
||||||
|
|
||||||
# Необходимо убедиться, что в папке присутствует конфиг EEPROM для изменения порядка загрузки
|
|
||||||
eeprom_conf="sd_eeprom.conf"
|
|
||||||
|
|
||||||
if [ ! -e "$eeprom_conf_path/$eeprom_conf" ]; then
|
|
||||||
ssh $server "echo Файл настроек EEPROM $eeprom_conf не найден" > $remote_path/lastlog 2>&1
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Необходимо синхронизировать время, т.к. сейчас оно отстаёт на неделю.
|
|
||||||
# Для этого используем утилиту ntpdate, Её необходимо заранее установить sudo apt install ntpdate.
|
|
||||||
ntpdate ntp1.vniiftri.ru
|
|
||||||
|
|
||||||
# Имя образа
|
# Имя образа
|
||||||
name=$(echo $(date +%Y-%m-%d)_${HOSTNAME}_image.img.gz | sed 's/-usb//')
|
name=$(echo $(date +%Y-%m-%d)_${HOSTNAME}_image.img.gz | sed 's/-emmc//')
|
||||||
|
|
||||||
# Имя диска, над которым будем работать. SD в RPI называется mmcblk0
|
# Имя диска, над которым будем работать. SD в RPI называется mmcblk0
|
||||||
disk=/dev/mmcblk0
|
disk=/dev/mmcblk1
|
||||||
|
|
||||||
# запишем в переменную последний сектор последнего раздела диска
|
# запишем в переменную последний сектор последнего раздела диска
|
||||||
last_sector=$(fdisk -l -o end $disk | tail -1)
|
last_sector=$(fdisk -l -o end $disk | tail -1)
|
||||||
|
@ -98,9 +67,6 @@ ssh $server 'echo "$(tail -5 $remote_path/log)" > $remote_path/log'
|
||||||
count_copies=3
|
count_copies=3
|
||||||
ssh $server "find $remote_path -type f -name '*_image.img.gz' -printf '%T@ %p\n' | sort -nr | cut -d' ' -f 2- | tail -n +$(($count_copies+1)) | xargs rm -f --"
|
ssh $server "find $remote_path -type f -name '*_image.img.gz' -printf '%T@ %p\n' | sort -nr | cut -d' ' -f 2- | tail -n +$(($count_copies+1)) | xargs rm -f --"
|
||||||
|
|
||||||
# Необходимо переключить EEPROM на загрузку с SD карты
|
|
||||||
rpi-eeprom-config -a $eeprom_conf_path/$eeprom_conf
|
|
||||||
|
|
||||||
# Перезагрузка
|
# Перезагрузка
|
||||||
/usr/sbin/reboot
|
/usr/sbin/reboot
|
||||||
|
|
||||||
|
@ -109,19 +75,21 @@ rpi-eeprom-config -a $eeprom_conf_path/$eeprom_conf
|
||||||
Добавить права на выполнение
|
Добавить права на выполнение
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pi@host-usb:~ $ sudo chmod +x /opt/backup_rpi/rpi_backup.sh
|
da2001@opisd:~$ sudo chmod +x /opt/backup_opi/opi_backup.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
7. Обеспечить выполнение скрипта при загрузке с USB. Сервис systemd
|
**!!Актуализировать!!**
|
||||||
|
|
||||||
|
7. Обеспечить выполнение скрипта при загрузке с SD. Сервис systemd
|
||||||
|
|
||||||
Для этого вам нужно создать скрипт запуска systemd и поместить его в каталог `/etc/systemd/system/`.
|
Для этого вам нужно создать скрипт запуска systemd и поместить его в каталог `/etc/systemd/system/`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pi@host-usb:~ $ sudo vim /etc/systemd/system/rpi_backup.service
|
da2001@opisd:~$ sudo vim /etc/systemd/system/rpi_backup.service
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pi@host-usb:~ $ cat /etc/systemd/system/rpi_backup.service
|
da2001@opisd:~$ cat /etc/systemd/system/rpi_backup.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Run a Backup Script at Startup
|
Description=Run a Backup Script at Startup
|
||||||
After=default.target
|
After=default.target
|
||||||
|
@ -141,7 +109,3 @@ pi@host-usb:~ $ sudo systemctl enable rpi_backup.service
|
||||||
```
|
```
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
<https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-bootloader-configuration>
|
|
||||||
<https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-boot-eeprom>
|
|
||||||
<https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER>
|
|
||||||
|
|
|
@ -0,0 +1,183 @@
|
||||||
|
# Настройка OrangePI 5 Plus Debian
|
||||||
|
|
||||||
|
## Установка Proxmox на OrangePI 5 Plus Debian
|
||||||
|
|
||||||
|
https://github.com/jiangcuo/Proxmox-Arm64/wiki/Install-Proxmox-VE-on-Debian-bullseye
|
||||||
|
|
||||||
|
1. Указать внешний IP в hosts
|
||||||
|
|
||||||
|
```bash
|
||||||
|
da2001@opve:~$ cat /etc/hosts
|
||||||
|
127.0.0.1 localhost
|
||||||
|
192.168.13.14 opve.dav.lan opve
|
||||||
|
|
||||||
|
|
||||||
|
::1 localhost orangepi5plus ip6-localhost ip6-loopback
|
||||||
|
fe00::0 ip6-localnet
|
||||||
|
ff00::0 ip6-mcastprefix
|
||||||
|
ff02::1 ip6-allnodes
|
||||||
|
ff02::2 ip6-allrouters
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Добавить репозиторий Proxmox VE
|
||||||
|
|
||||||
|
```bash
|
||||||
|
echo "deb https://global.mirrors.apqa.cn/proxmox/debian/pve bookworm port" > /etc/apt/sources.list.d/pveport.list
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Добавить ключ репозитория
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl https://global.mirrors.apqa.cn/proxmox/debian/pveport.gpg -o /etc/apt/trusted.gpg.d/pveport.gpg
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Обновить индексы пакетов
|
||||||
|
|
||||||
|
```bash
|
||||||
|
apt update && apt dist-upgrade -y
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Установить необходимые пакеты
|
||||||
|
|
||||||
|
```bash
|
||||||
|
apt install ifupdown2
|
||||||
|
apt install proxmox-ve postfix open-iscsi
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Перезагрузить устройство
|
||||||
|
|
||||||
|
```bash
|
||||||
|
reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
## Debian 12 преднастроенный
|
||||||
|
|
||||||
|
```bash
|
||||||
|
su -
|
||||||
|
|
||||||
|
adduser da2001
|
||||||
|
|
||||||
|
usermod -aG 5,6,20,27,29,44,46,60,100,101,105,109,111,996,999 da2001
|
||||||
|
|
||||||
|
hostnamectl set-hostname opi.dav.lan
|
||||||
|
|
||||||
|
tee /etc/hosts<<EOF
|
||||||
|
192.168.13.14 opi.dav.lan opi
|
||||||
|
EOF
|
||||||
|
|
||||||
|
apt update && apt dist-upgrade -y
|
||||||
|
apt autoremove -y
|
||||||
|
|
||||||
|
orangepi-config
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Docker
|
||||||
|
|
||||||
|
Если не получилось настроить Proxmox, можно настроить Docker
|
||||||
|
|
||||||
|
### Сеть MacVLAN
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker network create -d macvlan \
|
||||||
|
--subnet=192.168.13.0/24 \
|
||||||
|
--gateway=192.168.13.1 \
|
||||||
|
-o parent=enP4p65s0 \
|
||||||
|
macvlan-net
|
||||||
|
```
|
||||||
|
|
||||||
|
где
|
||||||
|
|
||||||
|
`enP4p65s0` - сетевой интерфейс, подключенный к сети
|
||||||
|
|
||||||
|
**Узел docker не сможет взаимодействовать с созданной сетью macvlan, чтобы это изменить, необходимо создать интерфейс macvlan на узле со своим IP и маршрутом в сеть docker macvlan. Другие узлы сети без проблем взаимодействуют с клиентами сети docker macvlan, а это было целью. Таким образом, создавать дополнительный интерфейс и маршрут на узле не обязательно**
|
||||||
|
|
||||||
|
### Portainer
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker volume create portainer_data
|
||||||
|
|
||||||
|
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
### Adguard Home
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /home/da2001
|
||||||
|
mkdir /home/da2001/adguardhome && cd /home/da2001/adguardhome
|
||||||
|
|
||||||
|
docker run --name adguardhome\
|
||||||
|
--restart unless-stopped\
|
||||||
|
--network=macvlan-net \
|
||||||
|
--ip=192.168.13.28 \
|
||||||
|
--mac-address=02:42:ac:11:00:02 \
|
||||||
|
-v /home/da2001/adguardhome/work:/opt/adguardhome/work\
|
||||||
|
-v /home/da2001/adguardhome/conf:/opt/adguardhome/conf\
|
||||||
|
-p 53:53/tcp -p 53:53/udp\
|
||||||
|
-p 67:67/udp -p 68:68/udp\
|
||||||
|
-p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000:3000/tcp\
|
||||||
|
-p 853:853/tcp\
|
||||||
|
-p 784:784/udp -p 853:853/udp -p 8853:8853/udp\
|
||||||
|
-p 5443:5443/tcp -p 5443:5443/udp\
|
||||||
|
-d adguard/adguardhome
|
||||||
|
```
|
||||||
|
|
||||||
|
### BIND DNS
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /home/da2001
|
||||||
|
mkdir /home/da2001/bind
|
||||||
|
|
||||||
|
docker run --name bind9 \
|
||||||
|
--restart unless-stopped\
|
||||||
|
--network=macvlan-net \
|
||||||
|
--ip=192.168.13.27 \
|
||||||
|
--mac-address=02:42:ac:11:00:03 \
|
||||||
|
-v /etc/timezone:/etc/timezone:ro \
|
||||||
|
-p 53:53 \
|
||||||
|
-v /home/da2001/bind/etc:/etc/bind \
|
||||||
|
-v /home/da2001/bind/cache:/var/cache/bind \
|
||||||
|
-v /home/da2001/bind/records:/var/lib/bind \
|
||||||
|
-e BIND9_USER=bind \
|
||||||
|
-d ubuntu/bind9
|
||||||
|
```
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
## Debian 11
|
||||||
|
|
||||||
|
su -
|
||||||
|
|
||||||
|
adduser da2001
|
||||||
|
|
||||||
|
usermod -aG 5,6,20,27,29,44,46,60,100,101,105,109,111,996,999 da2001
|
||||||
|
|
||||||
|
hostnamectl set-hostname opve1.dav.lan
|
||||||
|
|
||||||
|
tee /etc/hosts<<EOF
|
||||||
|
192.168.13.14 opve1.dav.lan opve1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
mkdir /mnt/{iso,vms,backup}
|
||||||
|
sudo tee -a /etc/fstab<<EOF
|
||||||
|
|
||||||
|
UUID=091632c3-e0b2-4d27-9595-a00d59a3e50c /mnt/vms ext4 defaults 0 0
|
||||||
|
UUID=8a388dd8-000d-4f15-8e23-9838a460c378 /mnt/backup ext4 defaults 0 0
|
||||||
|
UUID=6fbd6031-3631-41b5-b4e8-e2b301bb59e5 /mnt/iso ext4 defaults 0 0
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl daemon-reload
|
||||||
|
mount -a
|
||||||
|
|
||||||
|
apt update && apt full-upgrade -y
|
||||||
|
|
||||||
|
echo "deb https://global.mirrors.apqa.cn/proxmox/debian/pve bullseye port">/etc/apt/sources.list.d/pveport.list
|
||||||
|
curl https://global.mirrors.apqa.cn/proxmox/debian/pveport.gpg -o /etc/apt/trusted.gpg.d/pveport.gpg
|
||||||
|
apt update && apt full-upgrade
|
||||||
|
|
||||||
|
apt install ifupdown2 -y
|
||||||
|
apt install proxmox-ve postfix open-iscsi -y
|
||||||
|
|
||||||
|
***
|
Loading…
Reference in New Issue