Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Stwórz własny niezawodny serwer w chmurze
Krok 1: Sprzęt
- Użyj metalowego pudełka i pomaluj go na swój ulubiony kolor. (Użyłem starego kontrolera pamięci masowej)
- Płyta Hobbycolor odporna na temperaturę co najmniej 75 C
- Malina pi 3
- Karta Micro SD (użyłem 16 GB, ale możesz użyć dowolnego rozmiaru >= 4 GB)
- Koncentrator USB z zewnętrznym gniazdem zasilania
- Adaptery USB do sata
- Napędy dyskowe
- Kabel sieciowy + gniazdko sieciowe
- Przewody + gniazdo wejściowe zasilania
- Śruby odzyskane z portu szeregowego lub VGA starego komputera
- Porty USB odzyskane ze starego komputera
Raspberry pi mocowane jest do płytki hobbycolor za pomocą śrub z portu vga.
Dyski mocowane są z tyłu zwykłymi śrubami.
Krok 2: Okablowanie
Gniazdo wejściowe zasilania łączy się z obydwoma odzyskanymi portami USB
Pierwsze usb (za wszystkimi przewodami z przodu po lewej stronie) służy jako źródło zasilania, używane są tylko czerwone i czarne przewody i są podłączone do gniazda wejściowego zasilania. Pierwszy kabel USB w tym porcie dostarcza zasilanie dla pi, drugi kabel USB dostarcza zasilanie do koncentratora USB.
Drugie usb (to z tyłu - przydatne do podłączania dodatkowych urządzeń) ma czerwony i czarny podłączony bezpośrednio do wejścia zasilania, natomiast biały i zielony każdego portu jest podłączony do kabla usb odzyskanego ze starej myszy (białe bezpośrednio podłączony do pi)
Kabel LAN łączy zewnętrzne gniazdo sieciowe z portem LAN raspberry pi
Dyski podłącza się przez USB do adapterów sata do zewnętrznego, zasilanego koncentratora USB (dyski o większej pojemności wymagają większej mocy i nie chcemy, aby pi było niestabilne), który jest podłączony w jednym z portów pi
Krok 3: Oprogramowanie
Zainstaluj system operacyjny
Użyj Centos 7 do ramienia dla większego bezpieczeństwa. (https://mirror.centos.org/altarch/7/isos/armhfp/); testowane: CentOS-Userland-7-armv7hl-Minimal-1611-RaspberryPi3.img.xz, tutorial tutaj:
Umieść obraz na karcie micro sd z komputera z systemem Linux (dla systemu Windows sprawdź:
xzcat CentOS-Userland-7-armv7hl-Minimal-1611-RaspberryPi3.img.xz | sudo dd of=$/ścieżka/do/sd/status karty=postęp bs=4M
hasło roota: centos
użyj nmtui do skonfigurowania sieci i ustawienia statycznego adresu IP
Skonfiguruj dyski
Utwórz jedną partycję na każdym dysku (lepiej być trochę mniejszy niż cały dysk - powiedzmy 1 GB mniejszy - różne dyski o tej samej pojemności - np. wd vs toshiba - mają różne rozmiary:)). W ten sposób będziesz bezpieczny, jeśli będziesz musiał wymienić jeden z dysków
Utwórz system plików btrfs raid 1 na swoich dyskach
mkfs.btrfs -d raid1 -m raid1 /dev/sda1 /dev/sdb1
Etykieta systemu plików btrfs /dev/sda1 rpi3
Zamontuj system plików za pomocą autofs (zapobiega brakowi uruchomienia pi, jeśli coś pójdzie nie tak z dyskami)
mniam zainstaluj -y autofs
dołącz przepływ do /etc/auto.master:
/- /etc/auto.ext-usb --timeout=300
Utwórz /etc/auto.ext-usb z zawartością:
/srv -fstype=auto, compress=lzo, noatime:/dev/disk/by-label/rpi3
usługa autofs restart
ls /srv, df -h, potwierdź, że jest zamontowany
Zainstaluj własną chmurę
Wymagania wstępne (apache, php, mariadb):
mniam zainstaluj -y httpd; mniam zainstaluj -y mod_ssl; mniam install -y serwer mariadb; mniam zainstaluj -y php*
Zainstaluj owncloud 9, który jest kompatybilny z php54 dostarczanym z centos7, dobry samouczek do tego:
download.owncloud.org/download/repositories…
Po uruchomieniu własnej chmury przenieś katalog danych z domyślnej lokalizacji na nowe dyski (/srv)
usługa httpd stop
edytuj /var/www/html/owncloud/config/config.php i wprowadź tę zmianę:
'datadirectory' => '/srv/owncloud/data', mkdir /srv/własna chmura; mv /var/www/html/owncloud/data /srv/owncloud && chown -R apache:apache /srv/owncloud/data/
usługa httpd start
Możesz zainstalować klienta desktopowego owncloud na linux/windows a dla telefonów używam foldersync
-
Włącz i skonfiguruj SELinux
(wersja robocza to: selinux-policy-3.13.1-166.el7.5.noarch, selinux-policy-targeted-3.13.1-166.el7.5.noarch)
upewnij się, że nie aktualizujesz tej polityki (w /etc/yum.conf append: exclude = selinux-policy*)
restorecon -Rv /
/boot/cmdline.txt powinien zawierać: selinux=1 security=selinux enforcing=1
/etc/sysconfig/selinux powinien zawierać: SELINUX=enforcing i SELINUXTYPE=targeted
restart
Po ponownym uruchomieniu dokonaj następujących ustawień:
mniam install -y policycoreutils-python
semange fcontext -a -t httpd_sys_rw_content_t /srv/owncloud(/.*)?
setsebool -P httpd_builtin_scripting=1; setsebool -P httpd_can_network_connect=1; setsebool -P httpd_enable_cgi=1; setsebool -P
jeśli napotkasz jakiekolwiek problemy, włóż kartę SD do innego komputera i zmodyfikuj plik cmdline.txt tak, aby miał: selinux=0
Zabezpiecz swoje pudełko
Zmień hasło roota
Utwórz sobie użytkownika (adduser -s /bin/bash "ja") i ustaw silne hasło (passwd "ja")
skonfiguruj sshd do nasłuchiwania na innym porcie i NIE zezwalaj na logowanie root
W /etc/ssh/sshd_config ustaw Port
(powiedzmy 2222), PermitRootLogin nie
Poinformuj SELinux i firewalld o swoich zamiarach:
zarządzaj portem -a -t ssh_port_t -p tcp 2222
usługa firewalld start && systemctl włącz firewalld.service
firewall-cmd --permanent --dodaj-port 2222/tcp
firewall-cmd --reload
restart usługi sshd
Upublicznij to
Na routerze internetowym przekieruj te porty na statyczne adresy IP ustawione w pierwszym kroku: 80, 443, 2222.
Skonfiguruj DDNS na routerze, aby mieć dostęp do swojego urządzenia z dowolnego miejsca.
Strojenie
Ustaw Apache na 5 proc. przy małej ilości pamięci:
/etc/httpd/conf.modules.d/00-mpm.conf
LoadModule moduły mpm_prefork_module/mod_mpm_prefork.so
StartSerwery 5
MinZapasowe serwery 5
MaxSpareServers 5
Limit serwera 5
MaxKlienci 5
Maksymalna liczba żądań na dziecko 3000
usługa httpd restart
Skonfiguruj crona, aby co tydzień szorował dyski i robił migawkę każdej nocy (w /etc/crontab)
01 02 * * 6 root btrfs scrub start /srv01 01 * * * root /usr/sbin/btrfs snapshot -r /srv /srv/@$(printf "\%s" $(/bin/date +\%d \%b\%Y-\%k-\%M))
sprawdzaj od czasu do czasu głośność za pomocą: btrfs dev stats /srv
Użyj watchdoga, aby automatycznie zresetować, jeśli przestanie odpowiadać (raspberry pi3 ma jeden sprzętowy):
mniam zainstaluj -y watchdog
/etc/watchdog.conf
watchdog-urządzenie = /dev/watchdogwatchdog-timeout = 15
interwał = 1logtick = 1 log-dir = /var/log/watchdog
czas rzeczywisty = takpriorytet = 1
usługa watchdog start && systemctl enable watchdog.service