Lietuvos mokslo ir studijų institucijų kompiuterių tinklas LITNET Vilniaus universitetas Failų dėtuvės paslauga Paslaugos administravimo instrukcija Paslauga sukurta vykdant Europos socialinio fondo finansuojamą projektą Mokslo ir studijų institucijoms LITNET teikiamų IT paslaugų plėtra Nr. 09.3.3-ESFA-V-711-01-0003 Vilnius 2018 m.
TURINYS Turinys... 2 Paslaugos aprašymas... 3 Paslaugos diegimo dokumentacija... 4 Naudojama programinė įranga... 4 Sistemos paruošimas...... 5 Nextcloud diegimas...10 Nextcloud sujungimas su OpenStack...12 SSO diegimas......14 Collabora diegimas...14 Sistemos palaikymas......20 Rezervinės kopijos...20 Failų dėtuvės atnaujinimas...26 Failų dėtuvės stebėjimas...28 2
PASLAUGOS APRAŠYMAS Failų dėtuvė - failų saugojimo sistema, sudaranti galimybę autentifikuotiems naudotojams talpinti savo dokumentus debesyje bei dalintis jais su kitais naudotojais. Ši sistema yra skirta ilgalaikiam failų saugojimui, su galimybe naudotojui juos pasiekti iš bet kokios vietos iš įrenginio su interneto prisijungimu. Paslaugos pagrindinės funkcijos: Failų valdymas įkėlimas, paieška, dalinimasis su kitais failų dėtuvės naudotojais; Word, Excel bei PowerPoint failų redagavimas naršyklėje (palaikomi OpenDocument bei OOXML formatai); PDF, TXT failų peržiūra; Naudotojo užrašų valdymas (notes); Nuotraukų galerija; Naudotojo veiksmų bei failų redagavimo istorijos peržiūra; Failų dėtuvės naudotojų failams saugoti galima naudoti tiek lokalią, tiek nutolusią saugyklas. Dėl projekto specifikos reikės, kad projektui pasirinktas produktas palaikytų 3.1.1 veikloje įdiegtą ir paruoštą naudojimui objektinių duomenų talpyklą, užtikrinsiančią aukštą pasiekiamumą (high availability), horizontalų bei vertikalų plėtimą iki didelių talpų bei didelę veikimo spartą. Naudotojų bei jų failų metaduomenys tokioje konfigūracijoje bus saugomi duomenų bazėje, su galimybe pereiti prie aukšto pasiekiamumo modelio, jei būtų toks poreikis. Tinkamai suprojektuota ir sudiegta tokia failų dėtuvė galės pilnai pakeisti Google Drive arba panašius rinkoje esančius komercinius sprendimus. 3
PASLAUGOS DIEGIMO DOKUMENTACIJA NAUDOJAMA PROGRAMINĖ ĮRANGA Failų dėtuvė yra diegiama virtualių mašinų pagrindu, veikiančių virtualizacijos serveriuose (hipervizoriuose). Virtualios mašinos operacinė sistema ir naudojama programinė įranga buvo parinkti pagal populiariausius rinkoje esančius sprendimus. Operacinė sistema: Ubuntu 16.04 LTS; Apache 2 HTTP serveris; PHP 7.0; MySQL duomenų bazė; Nextcloud 13 failų dėtuvė, kurios paskutinė versija yra gaunama adresu: https://download.nextcloud.com/server/releases/latest-13.zip Collabora Online Development Edition (CODE), https://www.collaboraoffice.com/code/ Sistemos stebėjimo, logų iškėlimo bei rezervines kopijas daranti programinė įranga yra diegiama ir konfigūruojama administratoriaus nuožiūra, pagal poreikį: Rsyslog - syslog logų siuntimas į logų surinkimo serverį; Zabbix klientas - Zabbix sistemos klientas serverio stebėjimui; Bareos klientas - Bareos rezervinių kopijų sistemos klientas rezervinėms kopijoms daryti. Funkcijos Sudiegus minėtą programinę įrangą failų dėtuvė palaikys šias funkcijas: Failų valdymas - įkėlimas, paieška, dalinimasis jais su kitais failų dėtuvės naudotojais; Debesyje saugomų failų sinchronizacija su naudotojo kompiuteriu arba mobiliu telefonu, per specialų klientą; Nuotraukų galerija - peržiūra, dalinimasis su kitais naudotojais; Kalendorius bei jo sinchronizavimas su naudotojo įrenginiais per CalDAV; Word, Excel bei PowerPoint failų redagavimas naršyklėje (palaikomi OpenDocument bei OOXML formatai); PDF, TXT failų peržiūra; 4
Naudotojo užrašinė (notes); Naudotojo veiksmų bei failų redagavimo istorijos peržiūra; Skiriant resursus virtualiam serveriui reikėtų atsižvelgti į šias programinės įrangos gamintojų rekomendacijas. Čia reikėtų pastebėti, kad šie skaičiai yra orientaciniai, labai priklausantys nuo naudotojų intensyvumo, jų naudojimosi sistema specifikos. Sisteminei aplinkai sudiegti užteks 10-15 GB diskinės vietos, kiti resursai priklauso nuo naudotojų skaičiaus. Didesniems serveriams rekomenduojama skirti daugiau, iki 30-50 GB diskinės vietos, dėl to, kad naudotojų failų, nors ir saugomų objektinėje saugykloje, metaduomenys vis tiek yra saugomi MySQL serveryje, lokaliai. Lokaliai yra saugomi ir sisteminiai įrašai (logs). Likusieji parametrai parenkami pagal šiuos kriterijus: 10 naudotojų vienai CPU gijai (CPU thread); Vienam naudotojui - 100 MB RAM; Vienam naudotojui - 100 Kb/s tinklo srauto; SISTEMOS PARUOŠIMAS Diegimo instrukcija naudos šiuos kintamuosius. Jie diegimo instrukcijoje bus paryškinti raudona spalva: MySQL slaptažodžiai - root, nextcloud: <mysql_root>, <mysql_nextcloud> Serverio domeno vardas bei IP: <server_name>, <server_ip> Collabora domeno vardas bei administratoriaus aplinkos slaptažodis: <collabora_name>, <collabora_admin_pwd> Serverio sertifikatai: <server_cert_public_key>, <server_cert_private_key>, <server_cert_chain> Sertifikatai Collabora virtualhost ui: <collabora_cert_public_key>, <collabora_cert_private_key>, <collabora_cert_chain> Šie parametrai yra naudojami administratoriaus nuožiūra, pagal poreikį: Zabbix serverio IP adresas bei MySQL naudotojo, per kurį Zabbix stebės MySQL, slaptažodis: <Zabbix_IP>, <mysql_zabbix> Syslog logų surinkimo serverio adresas ir portas: <Syslog_IP>, <Syslog_port> Bareos serverio IP adresas: <Bareos_IP>, slaptažodis: <Bareos_key> bei naudotojas, skirtas daryti MySQL rezervines kopijas: <mysql_backup> 5
Įrankių diegimas apt-get update apt-get dist-upgrade apt-get install htop atop ntpdate mc links2 bwm-ng apt-listchanges liblzo2-2 zlib1g-dev unzip fail2ban Rsyslog konfigūracija logų siuntimui į išorinį serverį (neprivaloma) Sukuriamas failas /etc/rsyslog.d/60-custom.conf *.* @<Syslog_IP>:<Syslog_port> Perkraunamas rsyslog servisas: systemctl restart rsyslog Visi Syslog logai nuo šiol keliaus į nurodytą logų surinkimo serverį. MySQL serverio diegimas Diegiami paketai: apt-get install mysql-server Diegimo metu bus pasiūlyta įvesti MySQL root slaptažodį. Sudiegus MySQL prisijungiama: mysql -u root -p <mysql_root> Kuriamas Nextcloud naudotojas: CREATE DATABASE nextcloud; CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY '<mysql_nextcloud>'; GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY '<mysql_nextcloud>'; FLUSH PRIVILEGES; Apache diegimas Instaliuojami paketai: apt-get install apache2 php7.0-common php7.0-gd php7.0-json php7.0-curl php7.0-zip php7.0xml php7.0-mbstring php7.0-mysql libapache2-mod-php7.0 php7.0-bz2 php7.0-intl php7.0-gmp php7.0-imagick 6
Norint, kad Apache klientams nerodytų versijos bei operacinės sistemos detalių, keičiamos eilutės faile: /etc/apache2/conf-available/security.conf ServerTokens Prod ServerSignature Off Redaguojamas konfigūracinis failas: vi /etc/apache2/sites-enabled/000-default.conf Pakeičiama: ServerName <server_name> Virtualhost o pabaigoje įkeliama ši konfigūracija RewriteEngine on RewriteRule ^ https://%{server_name%{request_uri [END,QSA,R=permanent] Tai nukreips visus HTTP kreipinius į HTTPS. Konfigūruojamas HTTPS: a2ensite default-ssl vi /etc/apache2/sitesenabled/default-ssl.conf Pakeičiamas vardas bei direktorija: DocumentRoot "/var/www/nextcloud" ServerName <server_name> Headerių pataisymas: <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; includesubdomains" </IfModule> Sukonfigūruojami sertifikatai: SSLCertificateFile /root/cert/<server_cert_public_key> SSLCertificateKeyFile /root/cert/<server_cert_private_key> SSLCertificateChainFile /root/cert/<server_cert_chain> 7
Kiti pataisymai: <Directory /var/www/nextcloud/> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud Satisfy Any </Directory> Konfigūracija Collabora virtualiam host ui yra kopijuojama nuo pagrindinio virtualhost o, su pataisymais: cp /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/collabora.conf Keičiamas ServerName: ServerName <collabora_name> Sukeliama konfigūracija collabora SSL virtual hostui: vi /etc/apache2/collabora-ssl.conf <VirtualHost *:443> ServerName <collabora_name>:443 SSLEngine on SSLCertificateFile /root/cert/<collabora_cert_public_key> SSLCertificateKeyFile /root/cert/<collabora_cert_private_key> SSLCertificateChainFile /root/cert/<collabora_cert_chain> SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA- CHACHA20POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128- GCMSHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM- SHA384:DHE- RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128- SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSAAES256- SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHEECDSA- AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSAAES128- SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES- 8
CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128- GCMSHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128- SHA:AES256- SHA:DES-CBC3-SHA:!DSS SSLHonorCipherOrder on <Directory /var/www/html> Options FollowSymLinks AllowOverride None Require all granted </Directory> # Encoded slashes need to be allowed AllowEncodedSlashes NoDecode # Container uses a unique non-signed certificate SSLProxyEngine On SSLProxyVerify None SSLProxyCheckPeerCN Off SSLProxyCheckPeerName Off # keep the host ProxyPreserveHost On # static html, js, images, etc. served from loolwsd # loleaflet is the client part of LibreOffice Online ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0 ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet # WOPI discovery URL ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0 ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery # Main websocket ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon # Admin Console websocket ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws # Download as, Fullscreen presentation and Image upload operations ProxyPass /lool https://127.0.0.1:9980/lool ProxyPassReverse /lool https://127.0.0.1:9980/lool </VirtualHost> </IfModule> 9
Įjungiami reikalingi Apache moduliai: a2enmod rewrite a2enmod headers a2enmod env a2enmod dir a2enmod mime a2enmod setenvif a2enmod ssl a2enmod proxy a2enmod proxy_wstunnel a2enmod proxy_http Paleidžiamas Apache systemctl start apache2 NEXTCLOUD DIEGIMAS Atsiunčiama vėliausia ištestuota versija (Nextcloud 13) wget https://download.nextcloud.com/server/releases/latest-13.zip unzip latest.zip cp -r nextcloud /var/www mkdir /var/www/nextcloud-data/ chown -R www-data:www-data /var/www/nextcloud chown -R www-data:www-data /var/www/nextcloud-data Tolesnis diegimas vykdomas per web interfeisą: nurodoma direktorija naudotojų failams (/var/www/nextcloud-data), nurodomas sukurtas MySQL naudotojas (nextclouduser), slaptažodis (<nextcloud_mysql>), administratoriaus naudotojo vardas bei slaptažodis. Konfigūruojama kvota Naudotojų kvota pagal nutylėjimą yra nurodoma per administratoriaus aplinką šiais žingsniais: 1. 2. 10
Įjungiamas kešavimas PHP APC cache ir Redis, paspartinantys PHP veikimą, yra diegiami taip: apt-get install php-apcu redis-server php-redis Perkraunamas Apache systemctl restart apache2 Konfigūraciniame faile /var/www/nextcloud/config/config.php, prieš instanceid prirašomos šios eilutės: 'memcache.local' => '\\OC\\Memcache\\APCu', 'memcache.locking' => '\\OC\\Memcache\\Redis', 'redis' => array ( 'host' => 'localhost', 'port' => 6379, ), Nextcloud taip pat rekomenduoja naudoti PHP OPcache. Tai daroma keičiant PHP konfigūraciją faile: /etc/php/7.0/apache2/php.ini [opcache] sekcijoje prirašoma: opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1 Perkraunamas Apache systemctl restart apache2 SMTP konfigūracija Esant poreikiui atliekama administratoriaus aplinkoje sekcijoje "Additional settings": 11
NEXTCLOUD SUJUNGIMAS SU OPENSTACK Bendro katalogo kūrimas: Jei yra poreikis turėti bendrą, visų naudotojų matomą ObjectStorage katalogą, pradžioje, OpenStack aplinkoje sukuriamas naudotojas, tarkime "NextCloud". Sukuriamas projektas pvz. "LITNET". Naudotojas "NextCloud" yra priskiriamas projektui "LITNET" ir yra nurodoma jo rolė: "swift_admin" (ši rolė reikalinga tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju, sukuriama objektų talpykla (Object storage) pvz. "NextCloud_shared". NextCloud aplikacijoje pasirenkama "Settings -> External storages", pasirinkama nauja talpykla "OpenStack Object Storage", su žemiau nurodytais parametrais: Folder name: aplankas, kurį matys visi vartotojai (pvz OpenStackObjectStorage). Autentification: OpenStack ServiceName: swift Region: RegionOne Bucket: NexCloud_shared Username: NextCloud Password: NextCloud vartotojo slaptažodis Tenant name: LITNET Identity endpoint URL: jūsų Keystone serviso adresas Ši konfigūracija sukurs "OpenStackObjectStorage" aplanką kiekvieno vartotojo asmeninėje aplinkoje. Duomenys šiame aplanke bus prieinami visiems vartotojams. Visos aplinkos iškėlimas į objektų talpyklą Šios konfigūracijos dėka visi vartotojų duomenys bus iškelti į objektų talpyklą. Objektų talpykloje esančių failų metaduomenys bus saugomi lokalioje MySQL duomenų bazėje. Objektų talpykla konfiguruojama į NextCloud konfigūracinį failą įrašant (variantas su Swift): 'objectstore' => array ( 'class' => 'OC\\Files\\ObjectStore\\Swift', 'arguments' => 12
), array ( 'username' => 'NextCloud', 'password' => ' NextCloud vartotojo slaptažodis', bucket' => ' VartotojuDuomenys', autocreate' => false, region' => 'RegionOne', url' => 'jūsų Keystone serviso adresas ', tenantname' => 'LITNET', servicename' => 'swift', urltype' => 'internalurl', ), Variantas su S3: 'objectstore' = array ( 'class' => 'OC\\Files\\ObjectStore\\S3', 'arguments' => array ( 'bucket' => 'VartotojuDuomenys', 'autocreate' => true, 'key' => 'slaptaslapta', 'secret' => 'slaptaslaptaslapta', 'hostname' => 'paslaugos adresas', 'port' => 443, 'use_ssl' => true, 'region' => 'optional', 'use_path_style' => true, ), ), Sukėlus šią konfigūraciją, visi Nextcloud naudotojų bei sisteminiai failai bus kuriami failų saugykloje, kurią S3 konfigūracijoje bus galima peržiūrėti su programa S3 Browser (http://s3browser.com/). Failai joje būna saugomi urn:oid:xxxx struktūros pavadinimais, kur XXXX reprezentuoja Nextcloud MySQL oc_filecache lentelės lauką "fileid". Iš jo galima gauti tikrąjį failo pavadinimą. Pvz. failas urn:oid:1034 13
SSO DIEGIMAS Autentifikacijai įdiegiamas "SSO & SAML authentication" įskiepis. SimpleSAML metaduomenų pavyzdys: $metadata['https://nextcloudurl/index.php/apps/user_saml/saml/metadata'] = array( 'NameIDFormat' => 'urn:oasis:names:tc:saml:2.0:nameid-format:transient', 'AssertionConsumerService' => 'https://nextcloudur/index.php/apps/user_saml/saml/acs', 'attributeencodings' => array('objectsid' => 'base64'), 'authproc' => array( 0 => array( 'class' => 'core:attributelimit', 'mail', 'edupersonprincipalname','displayname', ), ), ); SSO & SAML autentifikacijos įskiepyje nurodomi metaduomenys ir SSO paslaugos adresai. Unikaliam ID pasirenkamas edupersonprincipalname atributas. Varnelė "Allow the use of multiple user back-ends (e.g. LDAP)" uždedama pagal poreikį, jei norima palikti galimybę jungtis lokaliems arba LDAP naudotojams, administravimo darbams atlikti. 14
URL pataisymai be index.php/ Norint iš URL pašalinti kelią /index.php/, konfigūraciniame faile /var/www/nextcloud/config/config.php, prirašoma eilutė: 'htaccess.rewritebase' => '/', Atnaujinama konfigūracija per komandinę eilutę occ. cd /var/www/nextcloud/ sudo -u www-data php occ maintenance:update:htaccess Nextcloud foninės užduotys Nors failų dėtuvė moka fonines užduotis vykdyti be papildomų nustatymų, rekomenduojama jų vykdymą deleguoti operacinei sistemai. Tai vykdoma šiais žingsniais: 1. Prisijungus naudotoju su administratoriaus teisėmis, "Basic settings" nustatymuose, skiltyje "Background jobs" pasirenkant "Cron"; 2. Operacinėje sistemoje pakoreguojamas naudotojo, kuriuo veikia Nextcloud (www-data), crontab failas: crontab -u www-data -e Įterpiama: */15 * * * * php -f /var/www/nextcloud/cron.php Po šių žingsnių cron servisas vykdys Nextcloud fonines užduotis, kas 15 minučių. Dizaino keitimas Nors didelė dalis dizaino (prisijungimo lango paveiksliukas, logotipas, šūkis bei antraštės spalva) yra keičiami per nustatymus (Settings->Theming), likusią dalį reikės keisti PHP failuose. Lokalaus mygtuko prisijungimo tekstas yra keičiamas faile /var/www/nextcloud/apps/user_saml/lib/controller/samlcontroller.php, koreguojant eilutę 'display-name' => $this->l->t('direct log in'); SSO prisijungimo mygtuko tektas - per SSO konfigūravimo puslapį; Pagrindinis šablonas, kartu su mygtukų išdėstymu, yra keičiamas faile: /var/www/nextcloud/apps/user_saml/templates/selectuserbackend.php 15
Mygtukų spalvos - šiame CSS faile: /var/www/nextcloud/apps/user_saml/css/selectuserbackend.css Reikia turėti omenyje, kad atnaujinus įskiepį "SSO & SAML authentication", visi jame atlikti pakeitimai bus perrašyti. WebDAV bei CalDAV Kadangi WebDAV bei CalDAV protokolai nepalaiko autentifikacijos per SSO, sinchronizuoti savo failus arba kalendorius nepavyks be papildomų veiksmų. Nextcloud tam siūlo susikurti lokalų slaptažodį, generuojamą šiais žingsniais: 1. Užeinama į nustatymus 2. Saugumo nustatymai 3. Sugeneruojamas naujas slaptažodis 16
Suvedus pavadinimą bus sugeneruotas prisijungimo vardas bei slaptažodis, kurį bus galima naudoti WebDAV bei CalDAV klientuose. Programų diegimas SSO aplinkoje Reikėtų pastebėti, kad Nextcloud, dėl savo administratoriaus aplinkos veikimo logikos, diegiant naujas programas (apps) arba atliekant dalį kitų administracinių veiksmų reikalauja įvesti naudotojo slaptažodį. Kadangi, besijungiant per SSO, Nextcloud neturi galimybės įvesto slaptažodžio patikrinti, diegti naujų programų prisijungus per SSO nepavyks. Apeiti šį apribojimą galima dviem būdais: paliekant lokalų/ldap naudotoją ir SSO konfigūracijoje pažymėjus varnelę "Allow the use of multiple user back-ends (e.g. LDAP)", arba, naujų programų diegimą vykdyti per komandinę eilutę, programą gaunant iš Nextcloud Github: https://github.com/nextcloud/ Diegimas vyksta taip (kaip pavyzdys pasirinkta programa Notes): wget -q https://github.com/nextcloud/notes/archive/master.zip -P /var/www/nextcloud/apps unzip /var/www/nextcloud/apps/master.zip mv notes-master notes mv notes /var/www/nextcloud/apps chown -R www-data:wwwdata /var/www/nextcloud/apps/notes sudo -u www-data php /var/www/nextcloud/occ app:enable notes Vėliau programa konfigūruojama ir atnaujinama per naršyklę, kaip įprasta. 17
COLLABORA DIEGIMAS Collabora Online naudoja Docker virtualizaciją, dėl ko, jos paskutinė versija yra visada pasiekiama per Docker repozitoriją. apt-get install docker.io systemctl start docker systemctl enable docker Diegiamas Collabora konteineris: sudo docker pull collabora/code sudo docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\\.auth\\.test\\.vu\\.lt' -e "username=admin" -e "password=<collabora_admin_pwd>" --restart always --cap-add MKNOD collabora/code Nurodomas "domain" yra domeno vardas, kuriam leidžiama naudotis Collabora. Jį reikėtų pakoreguoti priklausomai nuo to, koks yra Nextcloud serverio vardas, naudojant prieš taškus specifinį escape simbolį - dvigubą brūkšnį: \\ Patikrinama, ar veikia (portas 9980 turi būti klausomas: sudo netstat -lnpt Paskutinis momentas - <collabora_name> vardo nukreipimas į Nextcloud, kad netyčia atėję naudotojai būtų nukreipiami ten, kur priklauso. vi /var/www/html/index.html Failo turinys: <meta http-equiv="refresh" content="0; URL='https://<domain_name>'" /> chown www-data:www-data /var/www/html/index.html Lietuvių kalbos tikrinimas (spellcheck) Norint, kad redaguojant tekstą Collabora tikrintų klaidas lietuvių kalba, ją reikia įdiegti. Diegimas vyksta prisijungiant prie konteinerio ir įdiegiant jame kelis papildomus paketus, po to išsaugant pakeitimus lokalioje repozitorijoje. Iš pradžių, pasižiūrima, kokie konteineriai yra paleisti: docker ps 18
Prisijungiama prie konteinerio per jo ID: docker exec -it <docker ID> /bin/bash Atnaujinamas paketų sąrašas ir instaliuojami papildomi paketai (pavyzdyje papildomai diegiama ir rusų kalba): apt update apt install vim collaboraoffice5.3-dict-lt collaboraoffice5.3-dict-ru hunspell-lt hunspell-ru Išeinama iš konteinerio: exit Įdiegus paketus pakeitimai įrašomi į lokalią repozitoriją: docker commit <docker ID> collabora-local Išjungiamas senas konteineris: docker stop <docker ID> Iš naujos repozitorijos collabora-local paleidžiamas konteineris su naujais parametrais: sudo docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\\.auth\\.test\\.vu\\.lt' -e "username=admin" -e "password=<collabora_admin_pwd>" -e "dictionaries=en_us ru_ru lt_lt" --restart always --cap-add MKNOD collabora-local Nextcloud susiejimas su Collabora Nextcloud pusėje įdiegiamas Collabora Online įskiepis: Konfigūruojant įskiepį Collabora serverio adresas yra nurodomas su https (turi veikti tuo pačiu protokolu kaip ir pats Nextcloud). Varnelė nustato, kokį dokumentų formatą naudoti pagal nutylėjimą - OOXML arba OpenDocument. 19
Papildomi įskiepiai Papildomai rekomenduojame susidiegti įskiepius: Calendar, PDF viewer, Quota warning, Bruteforce settings. Likusieji įskiepiai diegiami savo nuožiūra. Kalbos nustatymai Kalba keičiama konfigūraciniame faile: /var/www/nextcloud/config/config.php prirašant: 'force_language' => 'lt_lt', Norint, kad lietuvių kalba būtų rodoma pagal nutylėjimą tik tada, kai naudotojo naršyklės kalba nėra nustatyta, prirašoma taip: 'default_language' => 'lt_lt', SISTEMOS PALAIKYMAS \ Rezervinės kopijos Bareos kliento diegimas Sistemos rezervinėms kopijoms siūlome naudoti nemokamą įrankį Bareos, tačiau, galutinis sprendimas yra paliekamas administratoriui. Bareos rezervinis kopijavimas yra diegiamas tokia seka: Pridedama repozitorija rezervinėms kopijoms: vi /etc/apt/sources.list.d/bareos.list Į failą įrašoma: deb http://download.bareos.org/bareos/release/latest/xubuntu_16.04/ / Įdiegiamas repozitorijos raktas: 20
wget -qo - http://download.bareos.org/bareos/release/latest/xubuntu_16.04/release.key sudo apt-key add - Atnaujinamas paketų sąrašas ir įdiegiamas klientas: apt-get update apt-get install bareos-filedaemon Sukeliama konfigūracija: vi /etc/bareos/bareos-fd.conf Failo turinys: Director { Name = bareos-dir-dir Password="<Bareos_key>" FileDaemon { # this is me Name = bareos-dir-fd Maximum Concurrent Jobs = 20 Messages { Name = Standard director = bareos-dir-dir = all,!skipped,!restored Susiejamas Bareos serverio vardas su IP: vi /etc/hosts Prirašoma: <Bareos_IP> bareos-dir Paleidžiamas Bareos: systemctl start bareos-fd MySQL rezervinės kopijos Jeigu yra poreikis daryti MySQL rezervines kopijas, tam sukuriamas specialus naudotojas: mysql -u root -p 21
GRANT LOCK TABLES, PROCESS, SELECT ON *.* TO 'backup'@'localhost' IDENTIFIED BY '<mysql_backup>'; FLUSH PRIVILEGES; Sukeliamas įrankis mysql_backup (jį taipogi bus galima surasti prieduose): mkdir -p /root/mysql_backup Redaguojamas skriptas: vi /root/mysql_backup/start.sh #!/bin/bash initialize_variables() { DBHOST="localhost" DBUSER="backup" DBPASS="<mysql_backup>" DUMP="/usr/bin/mysqldump" TEMP="/tmp" MYSQL="/usr/bin/mysql" PREFIX="ionice -c2 -n7 nice -n19" BACKUP_DATE=`/bin/date +%m.%d_%h_%m` perform_backup() { LIST=`$MYSQL --user=$dbuser --password=$dbpass --host=$dbhost -Bse "SHOW DATABASES" grep -v Database grep -v information_schema grep -v performance_schema grep -v mysql grep -v sys` mkdir -p $TEMP/MYSQL/$BACKUP_DATE for i in $LIST; do $PREFIX $DUMP --user=$dbuser --password=$dbpass --host=$dbhost -- singletransaction $i gzip > $TEMP/MYSQL/$BACKUP_DATE/${i.sql.gz done initialize_variables perform_backup Redaguojamas skriptas: vi /root/mysql_backup/delete.sh #!/bin/bash rm -rf /tmp/mysql 22
Keičiamos teisės: chmod +x /root/mysql_backup/*.sh Bareos serverio pusėje užregistruojamas serveris ir sukonfigūruojamos taisyklės. vi /etc/bareos/clients/<server_name>.conf Failo turinys: Client { Name = <server_name> Address = <server_ip> Password = "<Bareos_key>" File Retention = 90 days Job Retention = 5 months AutoPrune = yes # Prune expired Jobs/Files FileSet { Name = "<server_name>_mysql" Include { Options { signature = MD5 File = "/tmp/mysql" 23
Job { Name = "<server_name>_mysql" Client = "<server_name>" JobDefs = "mysql_backup" FileSet = "<server_name>_mysql" Job { Name = "<server_name>_root" Client = "<server_name>" JobDefs = "root_backup" FileSet = "<server_name>_root" FileSet { Name = "<server_name>_root" Include { Options { signature = MD5 File = / Exclude { File = /w3 File = /proc File = /tmp File = /sys File = /proc File = /.journal File = /.fsck Sukeliami darbų aprašymai (job definitions): vi /etc/bareos/clients/job_defs.conf JobDefs { Name = "mysql_backup" RunScript { RunsWhen = Before FailJobOnError = No Command = "/root/mysql_backup/start.sh" RunScript { RunsWhen = After FailJobOnError = No 24
Command = "/root/mysql_backup/delete.sh" Type = Backup Level = Incremental Client = bareos-dir-fd Schedule = "FullEveryDay" Storage = BareosStorage_mysql Messages = Standard Pool = BareosStoragePool_mysql Priority = 10 Write Bootstrap = "/var/lib/bareos/%c.bsr" JobDefs { Name = "root_backup" Type = Backup Level = Incremental Client = bareos-dir-fd Schedule = "FullRootAWeek" Messages = Standard Full Backup Pool = BareosStoragePool_full Differential Backup Pool = BareosStoragePool_diff Incremental Backup Pool = BareosStoragePool_inc Pool = BareosStoragePool_inc Priority = 10 Write Bootstrap = "/var/lib/bareos/%c.bsr" Parametrai Storage, Pool, Full Backup Pool, Differential Backup Pool, Incremental Backup Pool parenkami pagal Bareos saugyklų konfigūraciją. 25
FAILŲ DĖTUVĖS ATNAUJINIMAS Nextcloud atnaujinimas Nextcloud atnaujinimas vykdomas per administratoriaus sąsają. Prieš atnaujinant rekomenduojama ištestuoti naują Nextcloud versiją testinėje aplinkoje, ar nėra problemų. Atnaujinimai diegiami tokia žingsnių seka: 1. Patikrinama, ar yra atnaujinimas : 2. Vykdomas atnaujinimas : 3. Atnaujinama duomenų bazė : 26
Collabora atnaujinimas Collabora atnaujinama išjungiant ir ištrinant seną konteinerį bei gaunant naują Collabora atvaizdą iš repozitorijos: Gaunamas konteinerių sąrašas (išjungti konteineriai yra rodomi su docker ps -a) Operacijos su konteineriais yra vykdomos per CONTAINER_ID. Juo operuojant senas konteineris yra išjungiamas bei ištrinamas: Atnaujinamas Collabora atvaizdas iš repozitorijos: docker pull collabora/code Paleidžiamas naujas konteineris: docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\\.auth\\.test\\.vu\\.lt' --restart always --cap-add MKNOD collabora/code Patikriname, ar viskas veikia: Taipogi: Kiti atnaujinimai MySQL, Apache bei kiti OS komponentai yra atnaujinami per Ubuntu repozitoriją. Saugumo atnaujinimai bus gaunami iki 2021 metų balandžio. Atnaujinimai vykdomi per apt-get programą: apt-get update apt-get dist-upgrade Po perkrovimo pašalinami seni branduoliai bei kiti nebereikalingi paketai: apt-get autoremove 27
FAILŲ DĖTUVĖS STEBĖJIMAS Failų dėtuvės stebėjimas atliekamas per administratoriaus valdymo aplinką, randamą administratoriaus valdymo aplinkoje -> Monitoring. Ten, be kitų aktualių parametrų, galima matyti statistiką, kiek naudotojų yra prisijungę šiuo metu: Failų dėtuvės serverio apkrovimo stebėjimą galima realizuoti su Zabbix, tačiau, ši dalis nėra privaloma ir paliekama administratoriaus nuožiūrai. Esamą architektūrą galima integruoti ir su Nagios, ir su kitomis stebėjimo sistemomis. Diegiama Zabbix repozitorija: wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb dpkg -i zabbix-release_3.4-1+xenial_all.deb apt-get update apt-get install zabbix-agent zabbix-sender Konfigūraciniame faile įrašomas Zabbix serverio IP: vi /etc/zabbix/zabbix_agentd.conf Pakeičiama eilutė: Server=<Zabbix_IP> Perkraunamas servisas: systemctl restart zabbix-agent MySQL Zabbix naudotojas Norint stebėti MySQL per Zabbix, MySQL papildomai sukuriamas naudotojas Zabbix: 28
mysql -u root -p CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '<mysql_zabbix>'; GRANT usage on *.* to 'zabbix'@'localhost' IDENTIFIED BY '<mysql_zabbix>'; FLUSH PRIVILEGES; Sukuriamas failas su prisijungimo duomenimis Zabbix agentui: mkdir -p /var/lib/zabbix vi /var/lib/zabbix/.my.cnf Faile įrašoma: [client] user = zabbix password = <mysql_zabbix> [mysqladmin] user=zabbix password = <mysql_zabbix> Pakeičiamos teisės: chmod 644 /var/lib/zabbix/.my.cnf chown - R zabbix:zabbix /var/lib/zabbix mkdir -p /etc/zabbix/zabbix_agentd.conf.d/ Sukeliamas failas /etc/zabbix/zabbix_agentd.conf.d/userparameter_mysql.conf (jį taipogi galima surasti tarp priedų): UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" HOME=/var/lib/zabbix mysql -N awk '{print $$2' UserParameter=mysql.connections,echo "show status like 'Threads_connected';" HOME=/var/lib/zabbix mysql -N cut -f2 UserParameter=mysql.max_connections,echo "show variables like 'max_connections';" HOME=/var/lib/zabbix mysql -N cut -f2 UserParameter=mysql.size[*],echo "select sum($(case "$3" in both "") echo "data_length+index_length";; data index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all"! "$1" ]] echo " where table_schema='$1'")$([[ "$2" = "all"! "$2" ]] echo "and table_name='$2'");" HOME=/var/lib/zabbix mysql -N UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping grep -c alive UserParameter=mysql.version,mysql -V Perkraunamas Zabbix agentas: systemctl restart zabbix-agent 29
Zabbix aplinkoje serveriui nurodomas papildomas šablonas - "Template App MySQL" Apache Zabbix stebėjimas Apache su Zabbix yra stebimas per specialų Perl skriptą, perduodantį į Zabbix pagrindinius parametrus iš Apache status - waiting for connection, closing connection, keepalive ir kitus. Įjungiamas Apache status modulis: a2enmod status Konfigūruojama: vi /etc/apache2/modsenabled/status.conf Pakeičiama atitinkamai: <Location /server-status> SetHandler server-status Require local </Location> Perkraunamas Apache: systemctl restart apache2 Sukeliamas skriptas iš priedų: vi /root/apache_zabbix.py Pakeičiamos teisės: chmod +x vi /root/apache_zabbix.py Į Cron yra įrašoma ši eilutė: * * * * * /root/apache_zabbix.py -c <server_name> -l http://<server_name>/server-status?auto -z <Zabbix_IP> > /dev/null 2>&1 Zabbix aplinkoje pridedamas šablonas stebėti Apache. Galutinis variantas turėtų atrodyti taip: 30
Prie serverio atsiras šie papildomi grafikai: 1. Apache 2. MySQL 31