Instalace Seafile 6.3.2 Community Edition na Debian 9 Stretch

Základní seznámení s tím, co je Seafile a jaký rozdíl oproti Nexcloudu, už bylo popsáno. Nyní je čas na detailnější informace o instalaci.

Tento článek navazuje na "Seafile - vlastní server pro zálohování a synchronizaci dat, lepší než ownCloud/Nexcloud? ".

Seafile logo

Seafile úvodem

Instalace není úplně triviální, je určitě lepší si to natrénovat na nějaké development serveru.

Pár poznámek před instalací

  • Seafile není žádná PHP aplikace - potřebuje, aby na serveru byly spuštěné daemony.
  • S tím souvisí i to, že k běhu potřebuje nějakou paměť - na VPS s 1GB je to tak akorát. Z manuálu: Minimum System Requirements - Linux server with 2GB RAM
  • Seafile pracuje na blokové úrovni, synchronizovaný soubor jako takový na serveru nenajdete
  • Všechny soubory se ale dají vyexportovat pomocí Exporting Libraries to File Systém https://manual.seafile.com/maintain/seafile_fsck.html
  • Existuje zajímavá knihovna Seafile-PHP-SDK https://github.com/rene-s/Seafile-PHP-SDK
  • Seafile: Community Edition nebo Professional Edition

Seafile Community Edition je volně dostupná, ale má omezené možnosti. Pro základní "domácí" použití je ale bohatě dostatečná. Professional Edition má více možností, a stále pro 3 uživatele je zdarma. https://www.seafile.com/en/product/private_server/

Seafile procesy

1 Deploying Seafile with MySQL

https://manual.seafile.com/deploy/using_mysql.html

Setting Up Seafile Server

Ze stránek https://www.seafile.com/en/download/ si stáhneme verzi "Server for generic Linux", aktuálně soubor seafile-server_6.3.2_x86-64.tar.gz. Ten si rozbalíme do adresáře /opt/seafile/.

Nejdříve spustíme skript /opt/seafile/seafile-server-6.3.2/setup-seafile-mysql.sh, který nám připraví databáze (celkem 3: ccnet, seafile a seahub).

Doporučuju si dát před všechny databáze nějaký stejný prefix (např. "sf-"), ať je jasné, že patří k sobě.

Dále instalujeme potřebné balíčky

apt-get install python2.7 libpython2.7 python-setuptools python-imaging python-ldap python-mysqldb python-memcache python-urllib3 python-requests

Další příkaz pip install pillow moviepy jsem nespouštěl, podporu videa nepotřebuju.

Finální adresářová struktura

root@debian:/opt/seafile# ll
total 48500
drwxr-xr-x 7 root root     4096 Aug 23 14:09 .
drwxr-xr-x 3 root root     4096 Aug 23 14:03 ..
drwx------ 2 root root     4096 Aug 23 14:09 ccnet
drwx------ 2 root root     4096 Aug 23 14:09 conf
drwx------ 3 root root     4096 Aug 23 14:09 seafile-data
drwxr-xr-x 6 root root     4096 Jul  9 12:13 seafile-server-6.3.2
-rw-r--r-- 1 root root 49631355 Jul  9 12:38 seafile-server_6.3.2_x86-64.tar.gz
lrwxrwxrwx 1 root root       20 Aug 23 14:09 seafile-server-latest -> seafile-server-6.3.2
drwxr-xr-x 3 root root     4096 Aug 23 14:09 seahub-data

Running Seafile Server

Nyní můžeme spustit v adresáři /opt/seafile/seafile-server-latest příkazy

./seafile.sh start
./seahub.sh start

Při prvním spuštění seahub.sh se zeptá na vytvoření admin účtu.

Případné problémy pomohou odhalit log soubory v /opt/seafile/logs.

2 Config Seahub with Apache

Dobře popsáno zde https://manual.seafile.com/deploy/deploy_with_apache.html

S nastavením Apache budeme pak pokračovat nastavením HTTPS a v nějaké podsložce na na webu (např. www.neco.cz/seafile/), jelikož si nechceme blokovat celou doménu.

A ještě pozor! V současné době ukazují návody použití FCGI, ale verze Seafile 6.3 už funguje jen s WSGI https://seafile.gitbook.io/seafile-server-manual/changelog/seafile-comm….

A také používám h2 protokol, takže je třeba povolit následující moduly:

apt-get install libapache2-mod-wsgi
a2enmod rewrite proxy_http proxy_http2 wsgi

V tomto kroku už dál nic neměníme, jdeme dál.

3 Enabling Https with Apache

https://manual.seafile.com/deploy/https_with_apache.html

Předpokládejme už funkční certifikát (např. CertBot), tudíž i nahraný modul ssl.

Jedem rovnou k dalšímu kroku, protože chceme mít Seafile na URL www.neco.cz/seafile/, a ne www.neco.cz/.

4 Deploy Seahub at Non-root domain

https://manual.seafile.com/deploy/deploy_seahub_at_non-root_domain.html

Konečně poslední krok, kde to všechno dáme dohromady. 

  • Seafile přes Apache
  • Jen HTTPS verze
  • Na vlastní non-root doméně

V souboru /opt/seafile/conf/ccnet.conf upravíme

SERVICE_URL = http://www.myseafile.com/seafile

Dále v /opt/seafile/conf/seahub_settings.py přidáme

SERVE_STATIC = False
MEDIA_URL = '/seafmedia/'
COMPRESS_URL = MEDIA_URL
STATIC_URL = MEDIA_URL + 'assets/'
SITE_ROOT = '/seafile/'
LOGIN_URL = '/seafile/accounts/login/'

a

FILE_SERVER_ROOT = 'http://www.myseafile.com/seafhttp'

A do konfigurace Apache přidáme řádky (moje upravená verze):

  Alias /seafmedia /opt/seafile/seafile-server-latest/seahub/media

  <Location /seafmedia>
    ProxyPass !
    Require all granted
  </Location>

  #
  # seafile fileserver
  #
  ProxyPass /seafhttp http://127.0.0.1:8082
  ProxyPassReverse /seafhttp http://127.0.0.1:8082
  RewriteRule ^/seafhttp - [QSA,L]

  #
  # seahub
  #
  SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
  ProxyPass /seafile http://127.0.0.1:8000/seafile
#  ProxyPassReverse / http://127.0.0.1:8000

Pak následují kroky

systemctl restart apache2

./seafile.sh stop && ./seahub.sh stop
rm -rf /tmp/seahub_cache/
./seafile.sh start && ./seahub.sh start

Seafile login form

Start Seafile at System Bootup

Dobře popsáno zde https://manual.seafile.com/deploy/start_seafile_at_system_bootup.html Jen je třeba si to pořádně pročíst a nezapomenou nahradit proměnnou ${seafile_dir} reálnou cestou, a také přidat mysql.service.

 

Něco nefunguje?

Pak nezbývá než sledovat logy, hlavně ten od Apache, protože s ním (konfigurací, moduly …) bude asi nejvíce problémů.

A pozor! Políčko pro přihlášení sice ukazuje "Email or Username", ale se jménem admin jsem se nepřihlásil, až s emailem.

A co dál?

Instalace klienta je jednoduchá https://www.seafile.com/en/download/ , k dispozici jsou "Desktop Syncing Clients" nebo "Desktop Drive Clients".