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