Содержание
Начальная установка
Для начала скачиваем образ операционной системы Raspbian (версию Lite если не нужен десктоп) по ссылке https://www.raspberrypi.org/downloads/raspbian/ и распаковываем образ из zip архива.
Качаем и устанавливаем программу для записи образа на SD карту Win32DiskImager (в дальнейшем ее же можно использовать для бакапа этой SD карты в файл образа).
Записываем скачанный образ этой программой на SD карту, вставляем ее в слот и загружаемся.
После загрузки жмем Enter и вводим логин pi и пароль raspberry.
Для первоначальной настройки можно использовать консольную программу настройки:
sudo raspi-config
Через нее можно сразу сменить дефолтный пароль, расширить раздел на весь объем флешки, выставить локаль на ru (после выбора локали будет еще запрос на каком языке выводить сообщения — лучше там выбрать англ. язык, на русском выглядит всё как-то не очень привычно и неудобно), настроить таймзону, включить SSH, если будет используется только через консоль без графической оболочки, то для GPU можно выбрать минимальный размер выделяемой памяти (16Мб).
Ставим сразу для удобства Midnight Commander:
sudo apt-get install mc
Настройка IP адреса
Если IP выдается через DCHP, то можно посмотреть какой был выдан адрес через команду
$ ifconfig eth0
Можно настроить руками статический IP.
Редактируем файл /etc/dhcpcd.conf
sudo nano /etc/dhcpcd.conf
ищем кусок
# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1
раскомментируем его и ставим свои ip:
interface eth0
static ip_address=192.168.1.10/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8
Добавить своего пользователя вместо дефолтного pi
Чтобы усложнить жизнь хакерам лучше вообще грохнуть дефолтного пользователя и завести своего с админскими правами.
Получаем список групп, в которых находится дефолтный пользователь pi
cat /etc/group | grep pi
Далее создаем себе пользователя с членством в этих же группах
sudo useradd -m -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,pi,spi,i2c,gpio new_user_name
Устанавливаем пароль созданному пользователю
sudo passwd new_user_name
Перезагружаем (sudo reboot) и заходим под созданным пользователем, если вход успешен, то грохаем дефолтного пользователя pi:
sudo deluser --remove-all-files pi
Чтобы не вводить каждый раз пароль при команда с sudo, редактируем файл /etc/sudoers.d/010_pi-nopasswd и меняем там pi на свой логин.
Обновление системы в рамках одной версии Raspbian
Обновляем список пакетов:
sudo apt update
Затем запускаем обновление всех пакетов, которые нуждаются в обновлении (с приставкой full- обновляет с зависимостями).
sudo apt full-upgrade
При обновлении скачанные пакеты кешируются в папке /var/cache/apt/archives, можно грохнуть кеш, если места на карте не хватает.
sudo apt clean
Получение информации о системе
# информация о процессоре:
cat /proc/cpuinfo
# информация о памяти:
cat /proc/meminfo
# Информация о памяти:
cat /proc/meminfo
# Информация о разделах карты памяти:
cat /proc/partitions
Версия ОС:
cat /proc/version
Список USB устройств:
lsusb
Утилита для получения доп. информации — vcgencmd
# температура процессорного ядра
vcgencmd measure_temp
Установка сервера OpenVPN
Устанавливаем PiVPN
curl -L https://install.pivpn.io | bash
при установке спросит пароль, потом захочет статический ip (если настраивали ранее, то просто соглашаться), выбираем пользователя, которому настроить VPN соединение (пользователей можно будет потом добавить из командной строки
# создать пользователя без пароля:
pivpn -a newadditionaluser nopass
потом установщик будет пугать что без автоматических обновлений (unattended upgrades) будет несекьюрно и предложит их включить, нажимаем Yes.
Потом выбираем какой протокол будем использовать UDP или TCP (наш выбор UDP).
Далее вводим номер порта на котором будет слушать VPN сервер (лучше нестандартный).
Далее выбираем использовать ли лучшую защиту (если у нас клиентские версии openvpn от 2.4), нам старье не нужно, поэтому нажимаем Yes.
После этого выбираем скольки битным шифрованием ECDSA шифровать соединение (256 соответствует 3072 бит RSA), выбираем золотую середину 384 между рекомендуемым размером и размером для параноиков.
Далее выбираем внешний белый IP для соединения снаружи или динамический DNS если белого IP у нас нет.
Затем выбираем провайдера DNS для подключаемых клиентов VPN (есть готовый список или можно забить свой), просто не паримся и выбираем Google, он и так о нас всё знает.
Далее на запрос Custom Search Domain отвечаем No.
На этом установка закончена и будет предложено ребутнуть систему.
Можно прописать в файле /etc/openvpn/server.conf версию протокола, добавив 4.
#proto udp
proto udp4
Далее создаем .ovpn файл который включает в себя ключ доступа, и который нужен для vpn клиента:
pivpn add
далее будет запрошено имя пользователя, срок действия сертификата (1080 дней по умолчанию), пароль для ключа, который будет запрашиваться при каждом подключении по VPN (защита на случай если сопрут ключ).
Сгенерированный файл сохраняется в каталоге
/home/Пользователь/ovpns.
Перетаскиваем файл конфигурации на устройство с клиентом и настраиваем на роутере форвардинг порта на внутренний ip raspberry.
Установка MySQL
С MySQL на rasperry облом, вместо него ставится MariaDB
sudo apt install mariadb-server
После установки нужно задать пароль для root (по умолчанию он пустой):
sudo mysql -u root -p
Также там на запрос об анонимных пользователях, отвечаем удалить им доступ, отключаем удаленное подключение рутом, удаляем тестовую базу. Вобщем на все вопросы отвечаем Yes.
После этого можно соединяться под рутом с новым паролем
sudo mysql -u root -p
Можно создать пользователей и базы:
CREATE DATABASE exampledb;
CREATE USER 'exampleuser'@'localhost' IDENTIFIED BY 'userpassword';
GRANT ALL PRIVILEGES ON exampledb.* TO 'exampleuser'@'localhost';
Установка PHP
Ставим апач
sudo apt install apache2
Ставим PHP 7.3 (версию можно поменять на свой вкус)
sudo apt install php7.3
Ставим нужные библиотеки (если потом ставить всякие пакеты типа phpmyadmin или фронт заббикса, то они сами подтянут необходимые для них библиотеки).
sudo apt install php7.3-curl php7.3-gd php7.3-intl php7.3-mbstring php7.3-mysql php7.3-opcache php7.3-xml php7.3-xmlrpc php7.3-zip php7.3-bcmath
Проверяем что php установился (выводим версию php)
php -v
Настройки лежат в /etc/php/7.3/
Установка модуля для апача
sudo apt install php libapache2-mod-php
Установка PHPMyAdmin
sudo apt install phpmyadmin
После установки можно запустить сразу dbconfig-common и ввести пароль для phpMyAdmin, эта штука настроит конфиги сама.
Правим настройки апача
sudo nano /etc/apache2/apache2.conf
добавляем в конец строчку
Include /etc/phpmyadmin/apache.conf
и рестартуем апач
sudo service apache2 restart
Ставим Zabbix 4.0
Создаем пользователя и базу для zabbix в MariaDB под рутом:
sudo mysql -u root -p
CREATE DATABASE zabbix;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'userpassword';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
Далее устанавливаем zabbix
sudo wget https://repo.zabbix.com/zabbix/4.0/raspbian/pool/main/z/zabbix-release/zabbix-release_4.0-3+$(lsb_release -sc)_all.deb
sudo dpkg -i zabbix-release_4.0-3+$(lsb_release -sc)_all.deb
sudo apt update
sudo apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-agent
Импортируем схему и данные (вводим пароль от базы zabbix)
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Редактируем конфиг:
sudo nano /etc/zabbix/zabbix_server.conf
Добавляем туда пароль от базы zabbix
DBPassword=пароль
Чтобы при перезагрузке сервера zabbix не вешал на пол часа систему из-за того MariaDB успела остановиться раньше чем zabbix (в этому случае zabbix будет пытаться долго и упорно сконнектиться с базой) — прописываем в настройках сервиса что требуется mysql:
systemctl edit zabbix-server
В редакторе прописываем следующие строчки и сохраняем файл:
[Unit]
Wants=mysql.service
After=mysql.service
Стартуем сервер и агент zabbix и прописываем в автозапуск
sudo systemctl restart zabbix-server zabbix-agent
sudo systemctl enable zabbix-server zabbix-agent
Далее настраиваем фронтенд для zabbix, редактируем конфиг zabbix для апача
sudo nano /etc/zabbix/apache.conf
прописываем нашу таймзону там где комментарий # php_value date.timezone Europe/Riga и рестартуем апач
# php_value date.timezone Europe/Riga
php_value date.timezone Europe/Moscow
Выставляем права на файлы zabbix
sudo find /usr/share/zabbix -type f -exec chmod 664 {} \;
sudo find /usr/share/zabbix -type d -exec chmod 775 {} \;
Заходим в веб-морду zabbix http://raspberry-ip/zabbix/ и прописываем настройки zabbix, после завершения входим с дефолтными пользователем и паролем:
Username: Admin
Password: zabbix
Меняем сразу пароль на свой.
Качаем этот архив, распаковываем. Файл userparameter_rpi.conf копируем в папку /etc/zabbix/zabbix_agentd.d , а файл rpi_zabbix_cputemp.xml импортируем в шаблоны zabbix (Настройка-Шаблоны-Импорт). Добавляем импортированный шаблон «Raspberry PI CPU Temperature» — Настройка-Узлы сети-Шаблоны.
Перезапускаем агент:
sudo service zabbix-agent restart
Установка FTP сервера
Ставим proftpd сервер:
sudo apt install proftpd
Правим конфиг
sudo nano /etc/proftpd/proftpd.conf
Раскомментировать строчку, чтобы пользователи не вылазили за домашний каталог
DefaultRoot ~
После настройки перезагружаем конфиг
sudo service proftpd reload
Установка msmtp для отправки почты
sudo apt-get install msmtp msmtp-mta ca-certificates mailutils
Создаем и редактируем файл конфига
cd /etc
sudo touch msmtprc
sudo nano msmtprc
Заполняем данные от учетной записи нашего почтового сервера (если используем учетку от гугла, то при 2х факторной авторизации нужно получить в аккаунте пароль приложения, если 2х факторной авторизации нет, то нужно включить в аккаунте доступ небезопасным приложениям).
account gmail
host smtp.gmail.com
port 587
logfile /tmp/msmtp.log
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
auth on
user user@gmail.com
password user_password
from user@gmail.com
account default : gmail
Проверяем отправку
echo 'your message' | msmtp destination-email-address@gmail.com
echo 'message' | mail -s "raspi-buster" destination-email-address@gmail.com
echo 'message' | sendmail destination-email-address@gmail.com
Подключение жестких дисков
Диски подключаем через USB3.0, через один или два порта. Если диски NTFS нужно поставить пакет (если еще не установлен).
sudo apt-get install ntfs-3g
Список подключенных дисков получаем командой:
sudo fdisk -l
Создаем каталоги, в который будем монтировать наши USB HDD (название можно придумать любое):
sudo mkdir /mnt/hdd1
sudo mkdir /mnt/hdd2
Устанавливаем права на запись на эти каталоги (либо другие если нужно ограничить)
sudo chmod 777 /mnt/hdd1
sudo chmod 777 /mnt/hdd2
Прописываем в конец файла /etc/fstab команду авто монтирования нашего USB HDD:
sudo nano /etc/fstab
Названия дисков смотрим из команды получения дисков, описанной выше (тип файловой системы указываем тот который присутствует на дисках, в данном случае NTFS).
/dev/sda1 /mnt/hdd1 ntfs-3g defaults,nofail,rw 0 1
/dev/sdb1 /mnt/hdd2 ntfs-3g defaults,nofail,rw 0 1
# если диск в ext-4 то монтируем так
/dev/sdb1 /mnt/hdd2 ext4 defaults,nofail,rw 0 1
После этого перезагружаемся и получаем примонтированные диски.
Параметр nofail позволяет загрузиться даже если не удастся примонтировать диск (без него придется проделать шаги, описанные ниже, но есть и отрицательный момент — если диск не примонтируется, а мы будем на него писать — по факту будет литься на нашу SD-карту, причем файлов будет не видно, чтобы их увидеть выполняем команды:
sudo mount --bind / /mnt
sudo ncdu -x /mnt
В этом случае в /mnt/ будет отображаться наша флешка и можно оттуда удалить файлы, которые должны были литься на HDD, но попали на флешку.
Если мы не прописали nofail и при редактировании fstab косякнули, то при загрузке можем получить такую надпись:
Cannot open access to console, the root account is locked.
В этом случае вытаскиваем SD карту, подключаем через картридер к компу, находим диск boot и в нем файл cmdline.txt.
Дописываем в конец первой строки с параметрами init=/bin/sh (создавать новую строку не надо, просто дописываем в конец).
Вставляем карту обратно и загружаемся.
Чтобы отредактировать fstab монтируем раздел для записи:
mount -o remount,rw /dev/mmcblk0p2 /
Вносим правки, исправляя косяки
nano /etc/fstab
Подключаем карту обратно к картридеру и убираем внесенный ранее текст init=/bin/sh
После этого перезагружаемся в обычном режиме.
Можно добавить пользователей под которым лить файлы на диски по FTP:
sudo useradd -m -d /mnt/hdd1/ hdd1
sudo passwd hdd1
sudo useradd -m -d /mnt/hdd2/ hdd2
sudo passwd hdd2
Форматируем диск в ext-4
Для секьюрности можно отформатировать диски в ext4.
Если диск уже примонтирован, то нужно размонтировать
sudo umount /dev/sda1
Запускаем fdisk для нужного диска
sudo fdisk /dev/sda
Дальше выбираем команду d и удаляем раздел (если разделов несколько то несколько раз запускаем команду d и выбираем нужный раздел, если раздел только один то удаляется без лишних вопросов).
сommand (m for help): d
Partition number (1,2, default 2):
Partition 2 has been deleted.
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
Затем создаем новый раздел командой n, первый сектор выбираем 2048.
Command (m for help): n
Partition number (1-128, default 1):
First sector (34-3907029134, default 65535): 2048
Last sector, +/-sectors or +/-size{K,M,G,T,P} (34-3907029134, default 3907029134):
Created a new partition 1 of type 'Linux filesystem' and of size 1.8 TiB.
Далее сохраняем изменения командой w
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
После этого форматируем созданный раздел в ext4
sudo mkfs.ext4 /dev/sda1
Проверка дисков SMART
Ставим smartmontools
sudo apt-get install smartmontools
#общая инфа о диске
sudo smartctl --info /dev/sda
# вывести подробную инфу
sudo smartctl -a /dev/sda
# начать длинный внутренний тест
sudo smartctl -t long -d sat /dev/sda -T permissive
# напишет сколько минут будет идти тест
# после теста смотрим результат
sudo smartctl -l selftest -d sat /dev/sda -T permissive
Добавляем параметры SMART в zabbix
Добавляем мониторинг состояния дисков в заббикс — берем скрипты из репозитория https://github.com/v-zhuravlev/zbx-smartctl
Чтобы zabbix мог запускать утилиты smartmontools копируем содержимое файла sudoers_zabbix_smartctl в файл /etc/sudoers.d/sudoers_zabbix_smartctl и ставим права на файл 440
sudo chmod 440 /etc/sudoers.d/sudoers_zabbix_smartctl
Копируем файл zabbix_smartctl.conf в папку /etc/zabbix/zabbix_agentd.d. В нем удаляем то что выше строчки (они для старых версий zabbix)
#With the latest 3.4 template you only need these
Копируем файл discovery-scripts/nix/smartctl-disks-discovery.pl в папку /etc/zabbix/scripts и устанавливаем права на файлы
sudo chown zabbix:zabbix /etc/zabbix/scripts/smartctl-disks-discovery.pl
sudo chmod u+x /etc/zabbix/scripts/smartctl-disks-discovery.pl
Тестируем скрипт, проверяем что он возвращает json с инфой о наших дисках.
sudo /etc/zabbix/scripts/smartctl-disks-discovery.pl
Если всё норм, то рестартуем агент
sudo systemctl restart zabbix-agent
Импортируем в zabbix шаблон Template_3.0_HDD_SMARTMONTOOLS_2_WITH_LLD.xml (Настройка->Шаблоны->Импорт) и подключаем его к нашему серверу (Настройка->Узлы сети->server_zabbx->шаблоны).
Установка minidnla
Ставим приложение
sudo apt-get install minidlna
Правим конфиг
sudo nano /etc/minidlna.conf
раскоментируем строчку чтобы не запускать от рута
#user=minidlna
Прописываем списком все папки где лежат наши медиа файлы (могут быть разбросаны в разных папках и на разных дисках)
media_dir=/mnt/hdd1/Films
media_dir=/mnt/hdd2/Films
можно там прописывать сразу и тип файлов:
A-аудио
P-картинки
V-видео
PV-картинки и видео,
если не указывать то minidlna сам определит тип файлов
media_dir=V,/mnt/hdd1/Films
media_dir=A,/mnt/hdd1/Music
media_dir=V,/mnt/hdd2/Films
Прописываем в конфиг папку, в которой будет хранится кеш-база медиа-ресурсов (чтобы не насиловать SD карту, прописываем на HDD), предварительно создав каталог на HDD.
db_dir=/mnt/hdd1/minidlna
Если нужно все папки выше указанные собрать в одну корневую, а не по отдельности то прописываем
merge_media_dirs=yes
Чтобы телек долго не ждал пока появится сервер в списке медиа ресурсов, прописываем чтобы minidnla каждые 15 секунд кричал в сеть что он работает
notify_interval=15
Рестартуем сервис
sudo systemctl restart minidlna
Добавляем генерацию превьюшек для видео
sudo apt install ffmpegthumbnailer
Создаем файл со скриптом:
#!/bin/bash
DIR=$1
if [ -z "$DIR" ]; then
printf "%s\n" "This script will generate thumbnails for all video files inside the given directory"
printf "%s\n" "moviexy.avi --> moviexy.jpg"
printf "%s\n" "ffmpegthumbnailer is required"
printf "%s\n" "Usage: generateThumbs "
exit 1
fi
TYPES=( mov mp4 avi mkv m4v xvid divx wmv mpg mpeg )
# Create a regex of the extensions for the find command
TYPES_RE="\\("${TYPES[1]}
for t in "${TYPES[@]:1:${#TYPES[*]}}"; do
TYPES_RE="${TYPES_RE}\\|${t}"
done
TYPES_RE="${TYPES_RE}\\)"
find $DIR -regex ".*\.${TYPES_RE}" -type f | while read -r FILEPATH
do
printf "%s\n" "--- Start Thumbnailcreation for ---"
printf "%s\n" "$FILEPATH"
THUMBFILE="${FILEPATH%.*}.jpg" # remove video ext. and add .jpg
if [ -f "$THUMBFILE" ]; then
printf "\e[1;33m%s\e[0m\n" "Thumbnail exists"
else
printf "\e[1;32m%s\e[0m\n" "Generating thumbnail..."
ffmpegthumbnailer -i "$FILEPATH" -o "$THUMBFILE" -s 160 -q 10
fi
printf "%s\n" "--- End Thumbnailcreation ---"
done
exit 0
Запускаем скрипт, добавляя параметром каталог с видео, сгенерируются файлы превьюшек с таким же именем что и видео.
Установка торрент-клиента Transmission
Сначала устанавливаем демон
sudo apt install transmission-daemon
Создаем папки на жестком диске torrent-inprogress для скачиваемых торрентов и torrent-complete для уже скачанных (это будет дефолтный каталог при добавлении торрент-файла, в окне добавления можно забить другой путь или диск).
sudo mkdir -p /mnt/hdd2/torrent-inprogress
sudo mkdir -p /mnt/hdd2/Films/torrent-complete
Редактируем конфиг
sudo nano /etc/transmission-daemon/settings.json
Прописываем строчки
"incomplete-dir": "/mnt/hdd2/torrent-inprogress",
"download-dir": "/mnt/hdd2/Films/torrent-complete",
"incomplete-dir-enabled": true,
Прописываем пароль для удаленного управления (после перезапуска там будет хеш этого пароля):
"rpc-password": "Your_Password",
Прописываем пользователя, которым будем коннектиться с веб-мордой
"rpc-username": "Your_Username",
Прописываем удаленный доступ только из локальной сети
"rpc-whitelist": "192.168.1.*",
Перечитываем настройки демона (иначе если просто перезапустить, то он затрет новые настройки)
sudo invoke-rc.d transmission-daemon reload
Стартуем демона
sudo systemctl start transmission-daemon
Веб-морда у Transmission слишком простая и не удобная, поэтому ставим китайскую альтернативу Transmission Web Control
Скачиваем установочный скрипт
wget https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control.sh --no-check-certificate
Запускаем его
sudo bash install-tr-control.sh
Там выбираем первый пункт
1. Install the latest release.
После установки можно заходить в web-интерфейс по IP адресу raspberry и порту 9091, вводим там свой логин/пароль который забили в конфиг ранее
http://<RASPBERRY_IPADDRESS>:9091
Backup системы (с sd-карты)
Чтобы не снимать образ флешки можно бакапить систему файлами, используя rsync. Так образ занимает меньше места и при регулярном бакапе обновляет только изменившиеся файлы.
Создаем файл rsync-exclude.txt, со списком каталогов, которые мы не будем бакапить
/proc/*
/sys/*
/dev/*
/boot/*
/tmp/*
/run/*
/mnt/*
/media/*
На внешнем диске создаем каталог для бакапа, к примеру /mnt/hdd1/backups/pi/
И запускаем команду для бакапа (указываем где лежит файл исключений и куда копируем).
rsync -aHxv --delete --exclude-from=/rsync-exclude.txt / /mnt/hdd1/backups/pi/
Когда понадобится восстановить используем обратную команду и восстанавливаем на второй раздел
rsync -av --delete-during /mnt/hdd1/backups/pi/ /mnt/sdcard_partition2/
Если редактировали раздел boot то можно бакапить и его, сначала восстановить его, а потом второй раздел.
Сервер rsyslog для сброса логов с роутера
Для настройки сброса логов с роутера (например Zyxel Kinetic) или любого другого сетевого устройства, включаем 514 порт в файле /etc/rsyslog.conf , для этого нужно раскомментировать строчки
# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")
# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")
Далее создаем файл для лога
sudo mkdir /var/log/rsyslog
sudo chmod 750 /var/log/rsyslog
sudo touch /var/log/rsyslog/zyxel.log
sudo chmod 640 /var/log/rsyslog/zyxel.log
Теперь создаем в папке /etc/rsyslog.d/ файл с любым именем и расширением conf, например zyxel.conf, со следующим содержанием (меняем адрес 192.168.1.1 на ip роутера, который будет отправлять логи).
$template NetworkLog, "/var/log/rsyslog/zyxel.log"
:fromhost-ip, isequal, "192.168.1.1" -?NetworkLog
& ~
Возможно потребуется написать & stop
вместо & ~
, но пока работает и так.
Рестартуем сервис
sudo service rsyslog restart
Прописываем в роутере в качестве syslog сервера ip raspberry.
Теперь чтобы логи не раздувались, в папке /etc/logrotate.d/ создаем файл с любым именем (например, zyxel), с правилами архивации:
/var/log/rsyslog/zyxel.log {
rotate 7
size 500k
notifempty
compress
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
Полезные ссылки
Raspberry Pi 3. Мониторинг температуры процессора и других показателей
Raspberry Pi 3. Установка медиасервера Plex
Raspberry Pi 3. Создание собственного облачного хранилища Nextcloud
Raspberry Pi 3. Организация сетевого доступа к файлам через Samba