OwnCloud telepítése (Wheezy)

Innen: AdminWiki

Ebben a leírásban az OwnCloud fájlszinkronizáló és felhőszolgáltatás frontend szerveralkalmazást telepítjük házirend szerint konfigurált Debian Wheezy (Apache 2.5.12, wsm2 2.4+, PHP 5.4, MySQL 5.5) webkiszolgálóra.

Az OwnCloud elsősorban személyes adatok felhőbeli tárolását és egyszerű megosztását célozza meg, technikailag WebDAV elérést ad a fájlterülethez (melynek bármely eleme egyszerű letöltésre - olvasásra - megosztható), CalDAV elérést a személyes naptárak illetve CardDAV elérést a személyes névjegyek tárolásához, szinkronizálásához. Az OwnCloud használatát számos platformon (Android, iOS, stb.) ingyenesen letölthető kliens applikáció támogatja.

Az OwnCloud nagy előnye, hogy jól dokumentált API áll rendelkezésre elsősorban PHP nyelvű egyedi modulok fejlesztésére.


Házirend

Az OwnCloud készítői - hasonlóan pl. a WordPress készítőihez - úgy igyekszenek kialakítani a szerveralkalmazást, hogy annak üzemeltetéséhez minimális közreműködés kelljen a szervergép illetve az alapszintű szolgáltatások (webszerver, adatbázis-szerver) üzemeltetőjétől. Sajnos ennek hátulütője, hogy a kódkarbantartás ugyanazon eszközzel és rendszerszintű hozzáféréssel - a publikus webfelületen keresztül - történik, mint a mindennapi webszolgáltatás. Ily módon a publikus webszervert futtató rendszerfelhasználó (www-data) jogosult kódállományok írására, ami nézetem szerint nagyon előnytelen kompromisszum a biztonság rovására. A jelen leírásban igyekszünk a kódkarbantartást szeparálni, és a wsm2-ben szokásos módon azt kizárólag a webadmin rendszerfelhasználó nevében futó WebDAV szolgáltatás számára fenntartani, korlátozva ezzel az OwnCloudon belüli adminisztrátor és az esetleges automatikus frissítőprogramok jogait és lehetőségeit.

Hasonlóan más LAMP webalkalmazásokhoz, az OwnCloudot is úgy kívánjuk üzemeltetni, hogy:

  • ne igényeljen dedikált gépet, egy szervergépen - más-más Apache virtualhostok alatt - több példány (instance) is működjön;
  • a példányok egy közös, frissíthető kódkészletet használjanak, amely csak olvasható tárterületen (/usr/local/share) helyezkedjen el;
  • minden példány adatterülete a hozzá kapcsolódó virtualhost területén (/var/www/[virtualhost]) belül egy írható könyvtár legyen;
  • minden példány önálló, dedikált MySQL adatbázist használjon.

Ennek érdekében a következő fájlterületeket alakítjuk ki:

A példány saját (nem frissített) tárterülete  Közös (frissített) tárterület

/var/www/[virtualhost]/                       /usr/local/share/
                                                      owncloud/ -> owncloud-versions/owncloud-X.Y.Z
                   app/[community apps] ---------------->  app/[community apps]  # Közösség által szállított modulok
                       [own apps]                                                # Saját fejlesztésű, egyedi modulok
                  data/                                                          # Saját adatterület
                config/                                                          # Saját beállítások
            [any other] --------------------------> [any other]                  # Core kódkészlet

A példány saját tárterülete a wsm2-nek megfelelően a webadmin:www-data tulajdonában van a szokásos 2750/640 jogokkal (kivéve az írható /data 2770/660 jogokkal).

TODO!

Előfeltételek

  • Házirend szerint telepített Apache2 és wsm2, PHP, MySQL.
  • A házirend szerint opcionális PHP modulok közül a php5-gd telepítése.
  • Az alábbi PHP kiegészítők telepítése:
apt-get install libphp-pclzip   # a php-mbstring és php-xml már a core-ban van
  • A PHP globális beállításai között (/etc/php5/conf.d/wsm2-php5.ini) a disk_free_space, include, ini_set, mail, set_time_limit függvények engedélyezése.
  • Az owncloud-addons használatához az alábbiak telepítése:
apt-get install diffutils patch # nincs függősége, nem hoz sallangokat

Telepítés

Az OwnCloud a Debian terjesztésnek jelenleg nem része. Noha a terjesztő fenntart repository-t és készít .deb csomagokat, azok a házirendünk kívánalmainak nem igazán felelnek meg, ezért az OwnCloudot tarballból telepítjük. Töltsük le a legfrissebb stabil verziót, és a /usr írhatóan újracsatolása után csomagoljuk ki a /usr/local/share/owncloud-versions/owncloud-X.Y.Z könyvtárba a házirend szerinti jogosultságok beállításával:

mount -o remount,rw /usr  # Írni kell ide
OC_VERSION="X.Y.Z"        # Töltsük ki az aktuális verzióval!

# Közös kódkészlet könyvtárának elkészítése
mkdir /usr/local/share/owncloud-versions; chown root:staff /usr/local/share/owncloud-versions
mkdir /usr/local/share/owncloud-versions/owncloud-$OC_VERSION

# Letöltés, kicsomagolás
cd /root/tmp
wget http://download.owncloud.org/community/owncloud-$OC_VERSION.tar.bz2 # linket ellenőrizni, változhat!
tar xjvf owncloud-$OC_VERSION.tar.bz2 -C /usr/local/share/owncloud-versions/owncloud-$OC_VERSION --strip-components=1

# Jogosultságok beállítása
chown -R root:www-data /usr/local/share/owncloud-versions/
find /usr/local/share/owncloud-versions/ -type d -exec chmod 750 {} \;
find /usr/local/share/owncloud-versions/ -type f -exec chmod 640 {} \;

# Symlink az aktuális verzióra
ln -s owncloud-versions/owncloud-$OC_VERSION /usr/local/share/owncloud
chown -h root:www-data /usr/local/share/owncloud

Az owncloud-addons telepítése

Bár a core kódkészlet megváltoztatásától általában jobb tartózkodni, az OwnCloud jelenlegi állapotában a házirendünkkel nem teljesen kompatibilis és ezt csak a core foltozásával tudjuk áthidalni (TODO!). Ezen kívül a Samba backend használatához a files_external modul jelentős módosítása is szükséges. Mindezeket legegyszerűbben a patcheket és módosított modulokat tartalmazó owncloud-addons saját csomag telepítésével intézhetjük el.

Core patchelése

Töltsük le és a /usr partíció átmenetileg írhatóra csatolása után könyvtárhelyesen csomagoljuk ki owncloud-addons tarball legfrissebb változatát! Ez tartalmaz néhány patch állományt a /usr/local/share/owncloud-addons/patch könyvtárban. Válasszuk ki a telepített OwnCloud verziószámának megfelelőt(!), és alkalmazzuk:

patch -p0 -d /usr/local/share/owncloud </usr/local/share/owncloud-addons/patch/owncloud_X.Y.Z-owncloud-addons-YYYYMMDD.patch

Siker esetén állítsuk helyre az esetleg elromlott jogosultságokat:

chown -R root:www-data /usr/local/share/owncloud/
find /usr/local/share/owncloud/ -type d -exec chmod 750 {} \;
find /usr/local/share/owncloud/ -type f -exec chmod 640 {} \;

Saját modulok

A maintainer által csomagolt applikációk (modulok) közül az External storage support (files_external) rengeteg hibát tartalmaz, amit jelen leírás készítésekor egyszerűbbnek tűnt patchelés helyett a modul teljes cseréjével javítani (és a későbbiekben egyéb modulok cseréje is szükségessé válhat). A módosított modul(oka)t a /usr/local/share/owncloud-addons/apps könyvtár tartalmazza. Ezekkel most nincs teendő, de a virtualhostok kialakításakor a szóban forgó modul(oka)t nem a core könyvtárából, hanem innen fogjuk linkelni.

Noha a tarball-ban már így kell szerepelnie, biztos, ami biztos, állítsuk be a saját modulok jogosultságait a core modulokéval azonosan:

chown -R root:www-data /usr/local/share/owncloud-addons/apps/
find /usr/local/share/owncloud-addons/apps/ -type d -exec chmod 750 {} \;
find /usr/local/share/owncloud-addons/apps/ -type f -exec chmod 640 {} \;

A telepítés befejezéseként csatoljuk újra csak olvashatóan a /usr partíciót:

mount -o remount /usr

Ezzel az OwnCloud közös kódkészletét (a core-t) telepítettük, a továbbiakban a virtualhostonként külön-külön alkalmazható beállításokat tekintjük át.

Megjegyzés: a telepített OwnCloudot itt még nem tudjuk kipróbálni, csak ha a lentiek szerint legalább egy konkrét példányt is telepítünk.

Samba backend előkészítése

Opcionális telepítés illetve beállítás.

Az alábbiakra csak akkor van szükség, ha szeretnénk a felhasználók számára lehetővé tenni (egy vagy több) Samba fájlterület felcsatolását és az OwnCloud webfelületén, illetve annak elérését WebDAV kliensekkel (tablettel, okostelefonnal, stb.) az OwnCloud external_storage modulja segítségével. Ehhez szükséges:

  • A Samba parancssori kliens telepítése az OwnCloud szerverre:
apt-get install smbclient  # + függőségek, ha a Samba nincs telepítve ezen a gépen
  • Élő, állandó Samba (TCP:139 illetve TCP:445) adatkapcsolat az OwnCloud és a Samba szerver között (ha ezek azonos gépen vannak, akkor a localhost-on, ellenkező esetben külön felépített titkosított adatkapcsolaton, akár az Interneten keresztül, vagy titkosítatlanul, általában dedikált hálózaton).
  • A PHP globális beállításai között (/etc/php5/conf.d/wsm2-php5.ini) az exec, escapeshellcmd, escapeshellargs, popen, pclose, shell_exec függvények engedélyezése.

OwnCloud példány készítése

Egy OwnCloud példányhoz tartozik egy dedikált MySQL adatbázis, egy Apache virtualhost tárterülettel és webszerver (alkalmazásszerver) beállításokkal, valamint az OwnCloud saját beállítása (melyeket a telepítője inicializál).

MySQL adatbázis készítése

A MySQL adatbázisnak egyetlen, az adatbázisra nézve teljes jogú felhasználója van, akinek neve célszerűen megegyezik az adatbázis nevével. A nevet konvencionálisan oc_-vel kezdjük, és célszerű, ha kapcsolatban áll a virtualhost nevével.

Az adatbázist és a felhasználót a MySQL root hozzáféréssel hozzuk létre.

mysql --defaults-file=/etc/mysql/root.cnf

mysql> CREATE DATABASE oc_INSTANCENAME CHARACTER SET utf8 DEFAULT COLLATE utf8_hungarian_ci;
mysql> GRANT ALL PRIVILEGES ON oc_INSTANCENAME.* TO 'oc_INSTANCENAME'@'localhost' IDENTIFIED BY 'PASSWORD';
mysql> FLUSH PRIVILEGES;

ahol a PASSWORD egy megfelelő jelszó. Relatív megjegyezhető, mégis erős jelszó a pwgen segédprogrammal is generálható, pl. a következőképpen:

/usr/bin/pwgen -s -n -c 12 1

Ellenőrizzük, hogy a felhasználó megfelelően létrejött-e:

mysql> SELECT host, user, password FROM mysql.user ORDER BY user;
+-----------+------------------+---------------------------------------------+
| host      | user             | password                                    |
+-----------+------------------+---------------------------------------------+
| localhost | oc_INSTANCENAME  | *73CDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
[...]
+-----------+------------------+---------------------------------------------+

mysql> quit

Ezután próbáljunk a létrehozott felhasználó nevében és jelszavával belépni. Az alábbi parancsokkal ellenőrizhetjük, hogy a felhasználó jogosultságai valóban csak erre az adatbázisra terjednek ki:

mysql -u oc_INSTANCENAME -p
Enter password:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| oc_INSTANCENAME    |
+--------------------+

A felhasználó felvételét és kipróbálását követően töröljük le a .mysql_history állományt, mert ebben a jelszó szabad szöveges formában benne van:

rm ~/.mysql_history

Az adatbázis iniciális feltöltését a telepítő PHP script végzi.

Apache virtualhost készítése

Leírásunkban a http://fully.qualified.hostname weboldal közvetlenül az OwnCloud példány nyitólapjára mutat. A virtualhostot a szokott módon, a wsm2 segítségével készítjük el:

wsm2 -cw FULLY.QUALIFIED.HOSTNAME sysadmin@MYDOMAIN

Filerendszer beállítások

A wsm2 által létrehozott download könyvtárat és az index.html állományt töröljük. A virtualhost tárterületén a konfiguráció és az egyedi modulok és sminkek részére a tárterületet (az apps, config és themes könyvtárakat) fizikailag is el kell készíteni, ezekbe belinkeljük a közösségi modulokat és sminkeket. A felhasználók által feltöltött tartalom könyvtárát (upload) átnevezzük, kialakítunk benne egy ideiglenes- (tmp) és egy naplókönyvtárat (log). A /usr/local/share/owncloud alatti összes többi tartalmat egyszerűen belinkeljük:

cd /var/www/FULLY.QUALIFIED.HOSTNAME
pwd # Biztos, ami biztos.

rmdir download
rm index.html
mv upload data

# apps berendezése
mkdir apps; chown webadmin:www-data apps ; chmod 2750 apps
ln -s /usr/local/share/owncloud-addons/apps/* apps/    # Nem hivatalos modulok, ha vannak
ln -s /usr/local/share/owncloud/apps/* apps/           # Közösségi modulok

# config berendezése (sajnos a www-data írhatja)
setfacl -d -m g::rwX config
ln -s /usr/local/share/owncloud/config/* config/

# data berendezése (www-data írhatja)
mkdir data/tmp; chown webadmin:www-data data/tmp; chmod 2770 data/tmp
mkdir data/log; chown webadmin:www-data data/log; chmod 2770 data/log
touch data/log/owncloud.log; chown www-data:www-data data/log/owncloud.log; chmod 660 data/log/owncloud.log

# log symlinkelése
ln -s ../data/log log/applog

# themes berendezése
mkdir themes; chown webadmin:www-data themes ; chmod 2750 themes
#ln -s /usr/local/share/owncloud-addons/themes/* themes/ # Nem hivatalos sminkek, ha vannak
ln -s /usr/local/share/owncloud/themes/* themes/         # Közösségi sminkek

# .htaccess bemásolása (változtatni kellhet)
cp /usr/local/share/owncloud/.htaccess .
chown webadmin:www-data .htaccess; chmod 640 .htaccess

# minden mást belinkelünk
ln -s /usr/local/share/owncloud/* .
# tulajdonjog átruházása (csak szépség)
find . -type l -exec chown -h webadmin:www-data {} \;

Opcionálisan a felhasználó fájlterületeket (az eddigiek szerint /var/www/FULLY.QUALIFIED.HOSTNAME/data/username könyvtárak lennének) kivihetjük a /var/www hierarchiából, akár másik partícióra is. Ez különösen hasznos akkor, ha a szervergépen hagyományos webszolgáltatások is futnak, amelyeknek relatív kis tárterülete így elkülönítve menthető a cloud fájlterülettől.

Az alábbi példában a felhasználói tárterületet a /mnt/storage/FULLY.QUALIFIED.HOSTNAME könyvtárba visszük ki.

pwd                                           # /var/www/FULLY.QUALIFIED.HOSTNAME legyen
FOLDERNAME="/mnt/storage/$(basename $(pwd))"  # /mnt/storage/FULLY.QUALIFIED.HOSTNAME - vagy írjunk ide, amit szeretnénk
echo "$FOLDERNAME"                            # és ellenőrizzük!

mkdir -m 2771 "$FOLDERNAME"; chown webadmin:www-data "$FOLDERNAME"
getfacl . | setfacl --set-file=- "$FOLDERNAME"

Ezzel az alternatív felhasználói tárhelyet előkészítettük.

A telepítő írni szeretne az /apps és /config könyvtárakba, ezért ezeket átmenetileg tegyük írhatóvá:

chmod g+w apps config

Webszerver beállítások

Módosítsuk a virtualhost (a wsm2 által létrehozott) Apache konfigurációját:

  • a teljes virtualhostra vonatkozóan:
    • felvesszük az esetleges ServerAlias-okat;
    • engedélyezzük a PHP futtatását, engedélyezünk 32 MB RAM használatot és hosszabb futásidőt (feltöltések);
    • módosítjuk az open_basedir bejegyzést, hozzátesszük az OwnCloud kódkönyvtárait (figyelem: include_path-t nem szabad megadni!);
    • UTF-8 karakterkódolást kényszerítünk (Apache és PHP);
    • engedélyezzük a PHP file feltöltést, ha az APC telepítve van, a progress bar-t, megadunk (egy eltúlzott) méretkorlátot és egy ideiglenes könyvtárat;
    • engedélyezzük a PHP allow_url_fopen-t;
    • engedélyezzük a symlinkek követését a tulajdonos vizsgálata nélkül(!);
    • engedélyezzük mindennek felülvezérlését a .htaccess-ben;
    • tiltjuk a ModSecurity-t (mindenféle gonoszság várható, amire értelmesen nem tudok szűrni - TODO!);
  • speciálisan a data (írható) könyvtárra:
    • nem vizsgáljuk a ModSecurity-vel a POST tartalmakat, illetve tiltjuk a ModSecurity-t (TODO!);
  • a nem használt (törölt) könyvtárakra vonatkozó bejegyzéseket törölhetjük;
  • a virtualhost ssl konfigurációját az esetleges ServerAlias-ok felvételét kivéve nem kell módosítani.
-rw-r--r-- root root /etc/apache2/sites-available/FULLY.QUALIFIED.HOSTNAME

<VirtualHost *:80>
[...]
    <IfModule mod_php5.c>
        php_admin_flag engine on
        php_admin_value open_basedir /var/www/FULLY.QUALIFIED.HOSTNAME/:/usr/local/share/owncloud/:/usr/local/share/owncloud-versions/:/usr/local/share/owncloud-addons/
#       php_admin_value include_path .:/usr/share/php5/
        php_admin_value default_charset UTF-8
        php_admin_value memory_limit 32M
        php_admin_value max_execution_time 300
        [...]
        php_admin_value file_uploads on
#       php_admin_flag apc.rfc1867 on
        php_admin_value upload_max_filesize 100M
        php_admin_value post_max_size 100M
        php_admin_value upload_tmp_dir /var/www/FULLY.QUALIFIED.HOSTNAME/data/tmp/
        php_admin_flag allow_url_fopen on
        php_admin_value user_agent 'PHP (5.x)'
        [...]
    </IfModule>
[...]
    # ModSecurity settings (entire virtualhost).
    <IfModule security2_module>
        # Engine On/Off/DetectionOnly.
        SecRuleEngine off
    </IfModule>
[...]
    # Virtualhost itself.
    <Directory /var/www/FULLY.QUALIFIED.HOSTNAME>
        Allow from all
        AddDefaultCharset UTF-8
#       AllowOverride Authconfig Limit FileInfo
        AllowOverride all
        Options +FollowSymLinks
#       Options +SymLinksIfOwnerMatch
    </Directory>
[...]
    # Official upload directory (writable by www-data).
    <Directory /var/www/FULLY.QUALIFIED.HOSTNAME/data>
        Deny from all
        [...]
        <IfModule security2_module>
            SecRuleEngine off
            SecRequestBodyAccess Off
        </IfModule>
    </Directory>
[...]

Amennyiben alternatív felhasználói tárhelyet készítettünk elő, annak használatát engedélyezni kell:

  • a PHP open_basedir felsorolásában;
  • egy külön Directory bejegyzésben, amely a data könyvtárétól annyiban különbözik, hogy a közvetlen fájlelérést tiltjuk.
-rw-r--r-- root root /etc/apache2/sites-available/FULLY.QUALIFIED.HOSTNAME

<VirtualHost *:80>
[...]
    <IfModule mod_php5.c>
        php_admin_value open_basedir [...]:/STORAGE_PATHNAME/:[...]
        [...]
    </IfModule>
[...]
    # Storage directory (writable by www-data).
    <Directory /STORAGE_PATHNAME>
        Deny from all
        AllowOverride none
        AddType text/plain .html .htm .shtml
        Options -FollowSymLinks
        Options -SymLinksIfOwnerMatch
        # PHP disabled here.
        <IfModule mod_php4.c>
            php_admin_flag engine off
        </IfModule>
        <IfModule mod_php5.c>
            php_admin_flag engine off
        </IfModule>
        # ModSecurity disabled here.
        <IfModule security2_module>
            SecRuleEngine Off
            SecRequestBodyAccess Off
        </IfModule>
    </Directory>
[...]

A fentiekkel az OwnCloud virtualhost alapbeállítása megtörtént, a webszerver konfigurációk újraolvasása után használatba vehető:

invoke-rc.d apache2 reload

Használatba vétel

Tekintettel arra, hogy a frissen telepített OwnCloud az első, arra tévedő felhasználónak lehetőséget ad adminisztrátori hozzáférésre, a használatba vételt a webszerver konfiguráció újraolvasása után azonnal el kell végezni. Ehhez egy, a telepítés alatti szervert elérő munkaállomás grafikus böngészőjében hívjuk be a http://FULLY.QUALIFIED.HOSTNAME/ weboldalt, ami az OwnCloud telepítőjére visz. Itt csak az adminisztrátori név/jelszó párost és a MySQL adatbázis adatait, és ha készítettünk alternatív felhasználói tárhelyet, annak teljes elérési útvonalát kell megadni. A telepítő lefuttatása után lépjünk ki az OwnCloud webfelületéről.

Csak https forgalom kényszerítése

Tekintettel arra, hogy az OwnCloud webfelületén szenzitív adatok (fájlok, illetve jelszavak - köztük becsatolt külső tárterületek, szolgáltatások jelszavai) haladnak át, mindenképpen ajánlott a forgalmat https-re kényszeríteni. Noha van az OwnCloudnak erre belső funkciója is, jelen leírásban ezt a wsm2 eszközeivel fogjuk megvalósítani.

  • Titkosított adatforgalom esetén célszerű, ha a virtualhostnak van külső (nem self-signed) tanúsítványa. Ha nem rendelkezünk ilyennel, ez a pont kihagyható.

Ha van dedikált tanúsítványunk, annak állományait helyezzük el az Apache wsm2 szerinti authentikációs könyvtárában:

/etc/apache2/auth.d/
root:root rw-------  FULLY.QUALIFIED.HOSTNAME.pem   # tanúsító által aláírt szerver tanúsítvány
root:root rw-------  FULLY.QUALIFIED.HOSTNAME.key   # szerver oldali azonosító (privát kulcs)
root:root rw-------  FULLY.QUALIFIED.HOSTNAME.chain # tanúsító saját tanúsítványa (intermediate certificate - ha szükséges)

Ezután állítsuk be a virtualhost Apache ssl konfigurációjában a közös szerver tanúsítvány helyett a Server Name Indication használatát:

-rw-r--r-- root root /etc/apache2/sites-available/FULLY.QUALIFIED.HOSTNAME

[...]
        SSLEngine on
        # Uses server's certificate, probably untrusted with different CN!
#       SSLCertificateFile    /etc/ssl/certs/FULLY.QUALIFIED.SERVERNAME.pem
#       SSLCertificateKeyFile /etc/ssl/private/FULLY.QUALIFIED.SERVERNAME.key
        # Uses Server Name Indication and per-virtualhost certificates.
        SSLCertificateFile      /etc/apache2/auth.d/FULLY.QUALIFIED.HOSTNAME.pem
        SSLCertificateKeyFile   /etc/apache2/auth.d/FULLY.QUALIFIED.HOSTNAME.key
        SSLCertificateChainFile /etc/apache2/auth.d/FULLY.QUALIFIED.HOSTNAME.chain
[...]

Érvényesítsük a konfigurációt:

invoke-rc.d apache2 reload

és a https://FULLY.QUALIFIED.HOSTNAME/ (azaz az OwnCloud példány nyitólapja) böngészőben történő megtekintésével ellenőrizzük a tanúsítást.

  • Kényszerítsük a https használatát a virtualhost Apache konfigurációjában a wsm2 által előre elhelyezett rewrite aktiválásával (ne feledjük a szerver IP kitöltését!):
-rw-r--r-- root root /etc/apache2/sites-available/FULLY.QUALIFIED.HOSTNAME

[...]
        # Use to disable public http service (providing content only via https proxy).
        RewriteCond %{REMOTE_ADDR} !^(IP\.IP\.IP\.IP)$
        RewriteCond %{REMOTE_ADDR} !^(127\.0\.1\.1)$
        RewriteRule ^/(.*)         https://%{HTTP_HOST}/$1 [L,R,QSA]
[...]

Ugyanitt, a virtualhost Apache ssl konfigurációjában utolsó rewrite-ként engedélyezzük (irányítsuk belső http proxy lekérésre) az OwnCloud 3rd party DAV kezelőjét:

-rw-r--r-- root root /etc/apache2/sites-available/FULLY.QUALIFIED.HOSTNAME

[...]
            # OwnCloud/SabreDAV support
            RewriteCond %{REQUEST_URI} ^/apps/contacts/carddav.php [OR]
            RewriteCond %{REQUEST_URI} ^/remote.php [OR]
            RewriteCond %{REQUEST_URI} ^/status.php
            RewriteRule ^(.*)   http://%{HTTP_HOST}$1 [P,QSA,L]
            # Remaining (administrative) requests answered via ssl.
[...]

Érvényesítsük a konfigurációt:

invoke-rc.d apache2 reload

és a http://FULLY.QUALIFIED.HOSTNAME/ (azaz az OwnCloud példány nyitólapja) böngészőben történő megtekintésével ellenőrizzük az automatikus https-re váltást.

OwnCloud belső beállításai

Módosítsuk a telepítő által létrehozott konfigurációs állományt - a $CONFIG tömböt egészítsük ki az alábbiakkal:

-rw-r----- www-data www-data /var/www/FULLY.QUALIFIED.HOSTNAME/config/config.php

$CONFIG = array (
  [...]
/* Hardened policy */
/* Force use of HTTPS connection (true = use HTTPS) */
  'forcessl' => false,
/* Logfile moved into /data/log */
  'logfile' => 'data/log/owncloud.log',
/* Disable installing apps from the appstore */
  'appstoreenabled' => false,
/* R/O apps folder */
  'apps_paths' => array(
    0 =>
    array(
        'path'=> $_SERVER['DOCUMENT_ROOT'].'/apps',
        'url' => '/apps',
        'writable' => false,
    )
  ),
/* End of hardened policy */
/* Other customizations */
/* Theme to use for ownCloud */
  'theme' => "",
/* Lifetime of the remember login cookie, default is 15 days */
  'remember_login_cookie_lifetime' => 60*60*24*15,
/* How long should ownCloud keep deleted files in the trash bin, default value: 180 days */
  'trashbin_retention_obligation' => 30,
);

A változtatás azonnal érvényesül (semmit nem kell újraindítani). A fentiekkel:

  • tiltjuk a belső https kényszerítést (fontos, mert külsőt alkalmazunk!);
  • az OwnCloud saját naplóállományát (applications' log) a telepítésnél kialakított /data/log mappába irányítjuk;
  • tiltjuk alkalmazások (modulok, kódállományok) telepítését a webes adminisztrátori felületről (www-data ne írhasson kódot!);
  • előkészítjük a sminkelést;
  • rövidítjük a kuka életidejét és a bejelentkezési adatok megjegyzését két látogatás között.

Ezután már elvehetjük a www-data írásjogát a modulkönyvtárról (/apps). Jó lenne ezt elvenni a konfigurációs könyvtárról (/config) és állomány(ok)ról is, de úgy az OwnCloud egyszerűen nem indul el (TODO!). Jobb híján a /config/config.php tulajdonjogát adjuk át a webadmin-nak (ez amúgy is szükséges a DAV-on keresztüli web karbantartáshoz):

pwd # FULLY.QUALIFIED.HOSTNAME legyen
chmod g-w apps
chown webadmin:www-data config/config.php; chmod g+w config/config.php

Webcron beállítása

A karbantartási feladatokat a wsm2 webcron szolgáltatására bízzuk - állítsuk be a cron.php percenkénti meghívását a virtualhost .htcrontab állományában:

-rw-r----- webadmin www-data /var/www/FULLY.QUALIFIED.HOSTNAME/.htcrontab

[...]
* * * * * https://FULLY.QUALIFIED.HOSTNAME/cron.php

Adminsztrátori beállítások

A http://FULLY.QUALIFIED.HOSTNAME/ böngészőben behívásával (az automatikus https-re váltás után) adminisztrátorként lépjünk be az OwnCloudba.

  • A személyes menü, Személyes oldalon
    • adjunk meg egy email címet, amelyet pl. elfelejtett jelszó esetén használhat az OwnCloud.
  • A személyes menü, Alkalmazások oldalon
    • engedélyezzük az External storage support alkalmazást;
    • engedélyezzük az ownCloud dependencies info alkalmazást;
    • kapcsoljuk ki a Versions alkalmazást, azaz a verziókövetést (? - TODO!);
    • opcionálisan kapcsoljuk ki a Deleted files alkalmazást, azaz a kukát (? - TODO!).
  • A személyes menü, Adminisztráció oldalon
    • külső tárolók legyenek engedélyezve;
    • ütemezett feladatok legyenek Webcron állásban;
    • opcionálisan engedélyezzük a felhasználók számára a továbbosztást bárkinek (? - TODO!).

Teszteljük az OwnCloud levélküldését oly módon, hogy abból kilépve rossz jelszóval próbáljunk visszalépni, és az ekkor megjelenő elfelejtett jelszó linket használva kérjünk emailben password reset linket! Ha a levél megérkezett, azt nyugodtan letörölhetjük, korábbi jelszavunk érvényben marad.

TODO!

Webmail integráció a Roundcube klienssel

Opcionális telepítés.

Az OwnCloud 3rd party Roundcube webmail modulja segítségével az azonos szerveren telepített Roundcube webmail klienst az OwnCloud felhasználói webfelületébe integrálva jeleníthetjük meg. Ehhez az OwnCloud példány által használt virtualhoston belül létre kell hoznunk egy Roundcube példányt, majd a modul telepítésével és beállításával össze kell kapcsoljuk a két webszolgáltatást.

A Roundcube (modulokkal kiegészítve) önmagában is képes csoportmunka támogatásra (megosztott IMAP mappák, címjegyzék, naptár), de jelen leírásban mindezt az OwnCloudra hagyjuk. Egyetlen szinkronizálást fogunk támogatni: az OwnCloud-beli címjegyzéke(ke)t megjelenítjük a Roundcube címjegyzékei között, annak érdekében, hogy a felhasználó partnereit a levélíráskor az autocomplete fel tudja ajánlani, illetve hogy a Roundcube levélküldései során összegyűjtött email címekből a felhasználó átvehessen partnereket a fő címjegyzékébe. Ezt a szinkronizálást CardDAV protokollal végezzük ugyanúgy, ahogy a felhasználó egyéb eszközei (pl. desktop levelezőprogram, okostelefon, stb.) is teszik - vagyis nem használjuk ki, hogy a Roundcube és az Owncloud azonos szerveren, azonos virtualhostban futnak.

Roundcube előfeltételek

Roundcube példány elkészítése

A Roundcube példány számára szükség lesz egy önálló MySQL adatbázisra és egy írható tárterületre.

Roundcube MySQL adatbázis készítése

A Roundcube MySQL adatbázisnak egyetlen, az adatbázisra nézve teljes jogú és a kapcsolódó OwnCloud példány adatbázisától különböző felhasználója van, akinek neve célszerűen megegyezik a Roundcube adatbázis nevével. A nevet konvencionálisan rc_-vel kezdjük, és az előtag után a kapcsolódó OwnCloud példány adatbázisának nevét használjuk (vagyis ha az OwnCloud adatbázis neve és felhasználója oc_INSTANCENAME, akkor a Roundcube adatbázisa és felhasználója rc_INSTANCENAME nevű lesz).

Az adatbázist és a felhasználót a MySQL root hozzáféréssel hozzuk létre.

mysql --defaults-file=/etc/mysql/root.cnf

mysql> CREATE DATABASE rc_INSTANCENAME CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
mysql> GRANT ALL PRIVILEGES ON rc_INSTANCENAME.* TO 'rc_INSTANCENAME'@'localhost' IDENTIFIED BY 'PASSWORD';
mysql> FLUSH PRIVILEGES;

ahol a PASSWORD egy megfelelő jelszó. Relatív megjegyezhető, mégis erős jelszó a pwgen segédprogrammal is generálható, pl. a következőképpen:

/usr/bin/pwgen -s -n -c 12 1

Ellenőrizzük, hogy a felhasználó megfelelően létrejött-e:

mysql> SELECT host, user, password FROM mysql.user ORDER BY user;
+-----------+------------------+---------------------------------------------+
| host      | user             | password                                    |
+-----------+------------------+---------------------------------------------+
| localhost | rc_INSTANCENAME  | *73CDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
[...]
+-----------+------------------+---------------------------------------------+

mysql> quit

Ezután próbáljunk a létrehozott felhasználó nevében és jelszavával belépni. Az alábbi parancsokkal ellenőrizhetjük, hogy a felhasználó jogosultságai valóban csak erre az adatbázisra terjednek ki:

mysql -u rc_INSTANCENAME -p
Enter password:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| rc_INSTANCENAME    |
+--------------------+

mysql> quit

Az adatbázis iniciális feltöltéséhez (amelyet jelenleg manuálisan kell elvégezni) a maintainer SQL scriptjét használhatjuk:

cat /usr/local/share/roundcube/SQL/mysql.initial.sql | mysql -u rc_INSTANCENAME -p -D rc_INSTANCENAME

Az adatbázis telepítését követően töröljük le a .mysql_history állományt, mert ebben a jelszó szabad szöveges formában benne van:

rm ~/.mysql_history

Roundcube filerendszer beállítások

A Roundcube tárterülete a virtualhost /roundcube könyvtára lesz, ezen belül az esetleges egyedi pluginok és template-ek részére a tárterületet (a plugins és skins könyvtárakat) fizikailag is el kell készíteni, ebbe belinkeljük a közösségi modulokat és sminkeket. A példány egyedi konfigurációs könyvtárát (config) és a webszerver által írható könyvtárakat (logs, temp) szintén el kell készíteni, míg a /usr/local/share/roundcube alatti összes többi tartalmat (a közös kódkészletet) egyszerűen belinkeljük:

cd /var/www/FULLY.QUALIFIED.HOSTNAME
pwd # Biztos, ami biztos.

# Roundcube alapkönyvtár
mkdir roundcube; chown webadmin:www-data roundcube; chmod 2750 roundcube

# config berendezése
mkdir roundcube/config; chown webadmin:www-data roundcube/config; chmod 2750 roundcube/config
ln -s /usr/local/share/roundcube/config/.htaccess roundcube/config
ln -s /usr/local/share/roundcube/config/* roundcube/config

# logs berendezése (www-data írhatja)
mkdir roundcube/logs; chown webadmin:www-data roundcube/logs; chmod 2770 roundcube/logs; setfacl -d -m g::rwX roundcube/logs
ln -s /usr/local/share/roundcube/logs/.htaccess roundcube/logs
#ln -s /usr/local/share/roundcube/logs/* roundcube/logs

# plugins berendezése
mkdir roundcube/plugins; chown webadmin:www-data roundcube/plugins; chmod 2750 roundcube/plugins
#ln -s /usr/local/share/roundcube/plugins/.htaccess roundcube/plugins
ln -s /usr/local/share/roundcube-addons/plugins/* roundcube/plugins/    # Nem hivatalos modulok, ha vannak
ln -s /usr/local/share/roundcube/plugins/* roundcube/plugins            # Közösségi modulok

# skins berendezése
mkdir roundcube/skins; chown webadmin:www-data roundcube/skins; chmod 2750 roundcube/skins
#ln -s /usr/local/share/roundcube/skins/.htaccess roundcube/skins
ln -s /usr/local/share/roundcube/skins/* roundcube/skins

# temp berendezése (www-data írhatja)
mkdir roundcube/temp; chown webadmin:www-data roundcube/temp; chmod 2770 roundcube/temp; setfacl -d -m g::rwX roundcube/temp
ln -s /usr/local/share/roundcube/temp/.htaccess roundcube/temp
#ln -s /usr/local/share/roundcube/temp/* roundcube/temp

# .htaccess bemásolása (változtatni kellhet)
cp /usr/local/share/roundcube/.htaccess roundcube
chown webadmin:www-data roundcube/.htaccess; chmod 640 roundcube/.htaccess

# minden mást belinkelünk
ln -s /usr/local/share/roundcube/* roundcube
# symlinkek tulajdonjogának átruházása (csak szépség)
find roundcube -type l -exec chown -h webadmin:www-data {} \;

Roundcube webszerver beállítások

Az OwnCloudhoz tartozó virtualhost Apache http konfigurációjában helyezzük el az alábbi, Roundcube-specifikus beállításokat:

  • Megváltoztatjuk az open_basedir beállításokat, így a Roundcube példány csak a saját komponenseit futtathatja és "nem lát ki" az alkönyvtárából;
  • Beállítjuk az alapértelmezett időzónát;
  • Igyekszünk megvédeni a config, logs, temp könyvtárakat.
-rw-r--r-- root root /etc/apache2/sites-available/FULLY.QUALIFIED.HOSTNAME

<VirtualHost *:80>
    [...]

    # Roundcube settings.
    <Directory /var/www/FULLY.QUALIFIED.HOSTNAME/roundcube>
        Allow from all
        AllowOverride All
        <IfModule mod_php4.c>
#           PHP4 is not supported!
            php_admin_flag engine off
        </IfModule>
        <IfModule mod_php5.c>
            php_admin_value open_basedir /var/www/FULLY.QUALIFIED.HOSTNAME/roundcube/:/usr/local/share/roundcube/:/usr/local/share/roundcube-versions/:/usr/local/share/roundcube-addons/
            php_admin_value date.timezone Europe/Budapest
        </IfModule>
        <IfModule security2_module>
            # Engine On/Off/DetectionOnly.
            SecRuleEngine off
            SecRequestBodyAccess Off
        </IfModule>
    </Directory>
    <DirectoryMatch "^/roundcube/(config|temp)">
        Deny from all
        <IfModule mod_php4.c>
            php_admin_flag engine off
        </IfModule>
        <IfModule mod_php5.c>
            php_admin_flag engine off
        </IfModule>
    </DirectoryMatch>
    <DirectoryMatch "^/roundcube/(logs)">
        <IfModule mod_php4.c>
            php_admin_flag engine off
        </IfModule>
        <IfModule mod_php5.c>
            php_admin_flag engine off
        </IfModule>
    </DirectoryMatch>

    [...]

A beállításokat a webszerver konfiguráció újraolvasásával érvényesítjük:

invoke-rc.d apache2 reload

Roundcube telepítő segéd

A Roundcube példány használatba vételéhez már csak az adatbázis- (/roundcube/config/db.inc.php) és alkalmazás (/roundcube/config/main.inc.php) konfigurációs állományok elkészítésére van szükség. Ehhez egy, a telepítés alatti szervert elérő munkaállomás grafikus böngészőjében hívjuk be a http://FULLY.QUALIFIED.HOSTNAME/roundcube/installer weboldalt, ami (https-re váltás után) a Roundcube telepítő segédjére visz. A segéd ellenőrzi a PHP beállításokat, majd ad egy részben kitöltött beállító lapot. Ezen:

  • General configuration: enable_spellcheck (Googie spell checker) legyen kikapcsolva;
  • Database setup: a motor legyen MySQLi, az adatokat töltsük ki a korábban létrehozott adatbázisnak megfelelően;
  • IMAP settings: adjuk meg az OwnCloud példányhoz tartozó IMAP szervereket (default_host) és portszámot (default_port) - egyrészt, mert ezt az OwnCloud Roundcube Mail modulja még nem tudja átadni, másrészt mert nem szeretnénk, ha teljesen idegenek, akiknek az OwnCloud példányhoz tartozó IMAP szerveren nincs accountja, pl. GMail-hez használnák a szolgáltatást; ne adjunk meg username_domain-t (mert Roundcube Mail át tud adni teljes email címet felhasználónévként); hagyjuk bekapcsolva az auto_create_user funkciót;
  • SMTP settings: adjuk meg az OwnCloud példányhoz tartozó SMTP szervert (smtp_server - a tls:// előtag is használható!) és portszámot (smtp_port), mert ezt az OwnCloud modul nem tudja(?); általában a küldés és fogadás azonos authentikációt igényel, ezért a Use the current IMAP username and password for SMTP authentication checkboxot kapcsoljuk be;
  • Display settings & user prefs: a nyelv legyen hu_HU; a preview_pane legyen bekapcsolva; a htmleditor legyen always.

A Create config nyomógombbal a segéd elkészíti és szövegdobozban megmutatja, illetve letölthetővé teszi a fentieket tartalmazó beállító állományokat. Helyezzük el ezeket a config könyvtárban:

cd /var/www/FULLY.QUALIFIED.HOSTNAME
pwd                                  # Biztos, ami biztos...

touch roundcube/config/main.inc.php; chown webadmin:www-data roundcube/config/main.inc.php; chmod 640 roundcube/config/main.inc.php;
mcedit roundcube/config/main.inc.php # copy-paste felső textarea, save

touch roundcube/config/db.inc.php; chown webadmin:www-data roundcube/config/db.inc.php; chmod 640 roundcube/config/db.inc.php;
mcedit roundcube/config/db.inc.php   # copy-paste alsó textarea, save

Az adatlap megmarad, így itt módosítható és az állományok újrageneráltathatóak; ha végeztünk, a Continue nyomógomb visz tovább a tesztelésre.

Megjegyzés: a copy-paste nehézkesnek tűnik, viszont így nem kell a webszervernek írásjog a konfigurációs állományokra!

A tesztlapon az elhagyott support_url miatt nem kell aggódnunk :-), a levélküldést és az IMAP bejelentkezést érdemes tesztelnünk. Sikeres tesztet követően szüntessük meg a telepítő symlinkelését:

if [ -L roundcube/installer ]; then rm roundcube/installer; fi

Roundcube pluginok aktiválása

A Roundcube-bal együtt szállított (core) pluginokat és a roundcube-addons-ban szereplő pluginokat telepíteni már nem kell, azokat elegendő csak aktiválni. Az alábbi Roundcube pluginokra lesz szükségünk:

  • ACL (core) - felhasználói felületet ad IMAP mappák jogosultságkezeléséhez és megosztásához;
  • Automatic address book (3rd party) - megvalósítja a szokásos összegyűjtött címjegyzéket (elküldött levelek címzettjei) - ezek a címek a levélküldéskor használatos automatikus címkiegészítésben (autocomplete) is megjelennek;
  • CardDAV client (3rd party) - lehetőséget ad külső címjegyzékek (pl. a felhasználó alapértelmezett OwnCloud címjegyzéke) felcsatolására - ezek a címek a levélküldéskor használatos automatikus címkiegészítésben (autocomplete) is megjelennek;
  • Emoticons (core) - a levelekben szereplő hangulatjeleket grafikaként jeleníti meg;
  • Mark as junk (core) - a felhasználói felületen egy ikont ad a levelek szemétnek minősítésére.

Ha fentieken kívül, speciálisan csak a telepítés alatti OwnCloud/Roundcube példányhoz szeretnénk egyéb plugint telepíteni, azt a Roundcube Plugin Repository-ból letöltve és a Roundcube plugins könyvtárába webadmin:www-data 2750/640 jogosultságokkal kicsomagolva tehetjük meg (részletesen: TODO!).

Néhány plugin saját adatbázis táblákkal rendelkezik, aktiválás előtt ezeket a modullal szállított SQL scriptek lefuttatásával létre kell hozni:

# Automatic address book
cat /var/www/FULLY.QUALIFIED.HOSTNAME/roundcube/plugins/automatic_addressbook/SQL/mysql.initial.sql |\
mysql -u rc_INSTANCENAME -p -D rc_INSTANCENAME

# CardDAV client
cat /var/www/FULLY.QUALIFIED.HOSTNAME/roundcube/plugins/carddav/SQL/mysql.sql |\ 
mysql -u rc_INSTANCENAME -p -D rc_INSTANCENAME

A tényleges aktiválás a Roundcube config/main.inc.php konfigurációs állományába a pluginok nevének egy tömbben történő felsorolásával történik:

-rw-r----- webadmin www-data /var/www/FULLY.QUALIFIED.HOSTNAME/roundcube/config/main.inc.php

[...]
$rcmail_config['plugins'] = array( 'acl', 'automatic_addressbook', 'carddav', 'emoticons', 'markasjunk', );

Az aktiválás azonnal hatályba lép, semmit nem kell újraindítani.

Roundcube gyorsteszt

TODO!

A Roundcube Mail modul telepítése és beállítása

A Roundcube Mail modul a Roundcube példány felhasználói felületének az OwnCloud példány felhasználói felületébe integrálását teszi lehetővé és beállító felületet ad az OwnCloud felhasználónak egy, a Roundcube példányban beállított IMAP backend-en postafiókkal rendelkező felhasználóval történő összerendelésére. Így az OwnCloud felületéről indított Roundcube nem kér külön bejelentkezést.

Az owncloud-addons csomag tartalmazza a Roundcube Mail modul egy példányát, amelyet a telepítés során a /var/www/FULLY.QUALIFIED.HOSTNAME/apps könyvtárba symlinkeltünk, így adminisztrátori bejelentkezés után a modul az OwnCloud webfelületén (a személyes menü, Alkalmazások lapon) megjelenik és engedélyezhető. Ezután a személyes menü, Adminisztráció lapon:

  • a Roundcube settings, Basic settings fülén állítsuk be a Roundcube példány relatív elérési útvonalát (/roundcube/);
  • az Advanced settings fülön a Ne mutassa a RoundCube navigációs fejléc elemeit checkbox bejelölésével spóroljunk helyet a fejlécben, ugyanitt adjunk meg két véletlen karaktersorozatot, amelyeket a Roundcube hash készítésére használhat (bár az IMAP jelszó nem tárolódik, más jelszavak tárolására szükség lehet pl. címjegyzék szinkronizáláshoz, stb.) - ilyeneket pl. az alábbi parancssorral állíthatunk elő:
 pwgen -n -s -c 16 2

Ezzel a Roundcube - OwnCloud integrációt beállítottuk.

Roundcube - OwnCloud gyorsteszt

A gyorsteszthez szükségünk van egy OwnCloud felhasználóra, akihez hozzárendelhetünk egy, az IMAP backenden postafiókkal rendelkező felhasználót. Ennek a felhasználónak a nevében lépjünk be az OwnCloud webfelületén, és a személyes menüben állítsuk be a Roundcube Mailaccount felhasználónevét és jelszavát. Mentés után a Webmail ikonnal a Roundcube felületére, a beállított IMAP postafiókba kerülünk.

  • Ellenőrizzük a levélfogadást és a levélküldést - a címzettnek be kell kerülnie a Címjegyzék, Automatikusan begyűjtött címjegyzékbe és a következő levélcímzéskor meg kell jelennie az autocomplete listában is;
  • A Beállítások, CardDAV lapon csatoljuk fel OwnCloud címjegyzék néven a felhasználó alapértelmezett OwnCloud címjegyzékét, amelyet a https://FULLY.QUALIFIED.HOSTNAME/apps/contacts/carddav.php/addressbooks/USERNAME URL-en érünk el - a Címjegyzék lapon ennek meg kell jelennie és a Szinkronizálás nyomógombbal sikeresen kell azt szinkronizálnunk. Próbáljuk ki egy partner hozzáadását, módosítását illetve törlését is! Új levél címzésekor ezek a partnerek is meg kell jelenjenek az autocomplete listában.
  • Ha a VExim account admin telepítve van, akkor a Beállítások, Account Admin lapon ellenőrizzük legalább a jelszóváltoztatás és távollét üzenet funkciók működését. TODO!
  • TODO!

Sikeres tesztelést követően állítsunk be egy webcron feladatot a Roundcube-ban felvett (és majdan felveendő) külső címjegyzékek periodikus autoszinkronizálására (az alábbi bejegyzés minden óra ötödik percében szinkronizáltat):

-rw-r----- webadmin www-data /var/www/FULLY.QUALIFIED.HOSTNAME/.htcrontab

[...]
5 * * * * https://FULLY.QUALIFIED.HOSTNAME/roundcube/plugins/carddav/cronjob/synchronize.php

Samba fájlkiszolgáló csatolása

Jelen leírásban a Samba integráció célja, hogy másodlagos hozzáférést nyújtson egy közös használatú (pl. céges) tárterülethez. Nem célunk, hogy a közös fájlterületet intenzíven használó távmunkásoknak elsődleges fájlkezelője legyen az OwnCloud, mert a DAV-on keresztüli fájlkezelésnek még vannak hátulütői - elsősorban a sokféle eszközön futó és nem feltétlenül megbízható DAV kliensek, amelyekben pl. nincs megvalósítva a zárolás, így a Samba használata során megszokott és természetesnek tűnő szolgáltatások (pl. a fájlt a másodikként szerkesztő felhasználó csak olvasásra nyitja, stb.) nehézkesek. Emiatt nem túl fegyelmezett csoportmunka környezetben talán érdemes a közös Samba fájlterületet csak olvashatóan csatolni, és csak a kizárólagos használatú homes-ban engedni a R/W hozzáférést - távmunkások számára elsődleges eszközként jelenleg inkább a tunnelezett Samba elérést preferálnánk.

Jelen leírásban nem célunk a fájlkiszolgáló OwnCloud felőli menedzselése (felhasználók felvétele, megosztások kialakítása, stb.) sem.

Samba előfeltételek

  • Előkészített Samba backend (helyi vagy távoli szerver, megfelelő dedikált vagy titkosított adatkapcsolat, smbclient az OwnCloud kiszolgálón);
  • Működő OwnCloud példány telepített files_external modullal;
  • TODO!

Samba kliens beállításai

A Samba kliens (pontosabban a 3rd party smb4php általunk patchelt verziója) számára a $_SESSION[SMB4PHP][localhost][] struktúrában lehet (opcionálisan) paramétereket átadni (bővebben ld. a 3rdparty/smb4php/smb.php állomány fejlécét). Ha szükséges, ezekkel a beállításokkal módosítsuk az ownCloud konfigurációs állományát - pl. ha az alapértelmezett en_US.UTF8 nyelvi beállítással az ő, ű betűs fájlnevek kezelése nem működne, az állományt egészítsük ki az alábbiakkal:

-rw-rw---- webadmin www-data /var/www/FULLY.QUALIFIED.HOSTNAME/config/config.php

$CONFIG = array (
  [...]
);
$_SESSION['SMB4PHP']['localhost']['lang'] = 'hu_HU.UTF-8';

Megjegyzés: erre a beállításra általában nincs szükség, a házirend szerinti telepítés esetén az smb4php a nyelvi beállításokat jól eltalálja.

A változtatás azonnal érvényesül (semmit nem kell újraindítani).

Samba - OwnCloud gyorsteszt

TODO!

Karbantartás

TODO! - még ne vedd komolyan!

Kódkészlet frissítése

Tekintettel arra, hogy az Owncloud (jelenleg még) nem igazán letisztult alkalmazás, a frissítés során bármilyen gonoszság előfordulhat, így azt lehetőleg forgalommentes időben végezzük és legyen mentésünk!

A frissítést parancssori környezetben, root-ként végezzük. Töltsük le a legfrissebb stabil verziót, és a /usr írhatóan újracsatolása után csomagoljuk ki a /usr/local/share/owncloud-versions/owncloud-X.Y.Z könyvtárba a házirend szerinti jogosultságok beállításával:

mount -o remount,rw /usr  # Írni kell ide
OC_VERSION="X.Y.Z"        # Töltsük ki az aktuális verzióval!

# Kódkészlet verzió könyvtárának elkészítése
mkdir /usr/local/share/owncloud-versions/owncloud-$OC_VERSION

# Letöltés, kicsomagolás
cd /root/tmp
wget http://download.owncloud.org/community/owncloud-$OC_VERSION.tar.bz2 # linket ellenőrizni, változhat!
tar xjvf owncloud-$OC_VERSION.tar.bz2 -C /usr/local/share/owncloud-versions/owncloud-$OC_VERSION --strip-components=1

# Jogosultságok beállítása
chown -R root:www-data /usr/local/share/owncloud-versions/owncloud-$OC_VERSION
find /usr/local/share/owncloud-versions/owncloud-$OC_VERSION -type d -exec chmod 750 {} \;
find /usr/local/share/owncloud-versions/owncloud-$OC_VERSION -type f -exec chmod 640 {} \;

Core patch frissítése

A core patcheléséhez szükséges lehet az owncloud-addons tarball legfrissebb változata, amelyet innen töltsünk le, és (továbbra is írható /usr partíció mellett) könyvtárhelyesen csomagoljunk ki (ezzel egyben frissítjük a saját terjesztésű appokat is!). Lehetséges, hogy nem minden OwnCloud kiadáshoz tartozik külön owncloud-addons kiadás, ez esetben a meglévő legfrissebb patchet alkalmazhatjuk (de mindenképpen kell foltoznunk!).

A /usr/local/share/owncloud-addons/patch könyvtárból válasszuk ki a telepített OwnCloud verziószámának megfelelő (ennek hiányában a legfrissebb) foltot, és alkalmazzuk:

patch -p0 -d /usr/local/share/owncloud-versions/owncloud-$OC_VERSION </usr/local/share/owncloud-addons/patch/owncloud_X.Y.Z-owncloud-addons-YYYYMMDD.patch

Siker esetén állítsuk helyre az esetleg elromlott jogosultságokat:

chown -R root:www-data /usr/local/share/owncloud-versions/owncloud-$OC_VERSION
find /usr/local/share/owncloud-versions/owncloud-$OC_VERSION -type d -exec chmod 750 {} \;
find /usr/local/share/owncloud-versions/owncloud-$OC_VERSION -type f -exec chmod 640 {} \;

Ezzel a frissített közös kódkészletet aktiválásra előkészítettük.

Aktiválás

A frissítést az aktuális kódverzióra mutató symlink átírásával érvényesíthetjük:

if [ -L /usr/local/share/owncloud ]; then rm /usr/local/share/owncloud; fi
ln -s owncloud-versions/owncloud-$OC_VERSION /usr/local/share/owncloud
chown -h root:www-data /usr/local/share/owncloud

A frissítés befejezéseként csatoljuk újra csak olvashatóan a /usr partíciót:

mount -o remount /usr

Az esetleges adatbázis-frissítéseket az egyes OwnCloud példányok (nyitólapjának?) következő lekérésekor az OwnCloud automatikusan elvégzi.

Gyorsteszt

TODO!

Irodalom