31
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.

Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

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.

Page 2: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

2

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

Page 3: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

3

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.

Page 4: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

4

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;

Page 5: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

5

• 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>

Page 6: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

6

Į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

Page 7: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

7

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/sites-

enabled/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>

Page 8: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

8

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-

Page 9: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

9

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>

Page 10: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

10

Į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.

Page 11: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

11

Į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":

Page 12: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

12

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'

=>

Page 13: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

13

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

Page 14: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

14

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.

Page 15: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

15

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

Page 16: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

16

• 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

Page 17: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

17

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:www-

data /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.

Page 18: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

18

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

Page 19: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

19

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.

Page 20: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

20

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:

Papildomi įskiepiai

Page 21: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

21

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

Page 22: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

22

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

Page 23: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

23

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"

}

}

Page 24: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

24

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

Page 25: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

25

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ą.

Page 26: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

26

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ė :

Page 27: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

27

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

Page 28: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

28

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:

Page 29: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

29

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

Page 30: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

30

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/mods-

enabled/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:

Page 31: Failų dėtuvės paslauga - LITNET...tam, kad vartotojas turėtų teises kurti konteinerius objektų talpykloje). Prisijungiama prie OpenStack valdymo aplinkos su naujai sukurtu vartotoju,

31

Prie serverio atsiras šie papildomi grafikai:

1. Apache

2. MySQL