Seafile is een open source private cloud storage systeem waarmee gebruikers bestanden kunnen opslaan, synchroniseren en delen, inclusief apps voor de meest gebruikte besturingssystemen. Het biedt onder andere client-side versleuteling en is een veilig en goed alternatief voor cloud diensten, zoals Dropbox.

Seafile is een open source bestandshosting systeem waarmee gebruikers vanaf hun werkstation, laptop en mobiele devices bestanden op een centrale server kunnen opslaan en synchroniseren. Met Seafile deel je eenvoudig bestanden met anderen. Ook is het mogelijk om via een webbrowser toegang tot je bestanden te krijgen.

Server

De server van Seafile installeer en beheer je zelf. Dit biedt veel vrijheid, waarbij je tegelijk de volledige controle over je data houdt. De gebruiker dient een app te installeren om met Seafile te werken. Er zijn apps beschikbaar voor Android, iOS, verschillende Linux distributies, Mac OS X en Microsoft Windows. Voor Windows is er naast de normale client ook een zogenoemde Drive client. Wanneer je deze Drive client gebruikt, dan benader je de bestanden op server rechtstreeks zonder dat daarvoor directory’s op je lokale werkstation gesynchroniseerd worden. Dit werkt dus als een netwerk-drive.

De server is te downloaden voor Linux (er is een 32bits en een 64bits versie) en voor Microsoft Windows. Ook voor de Raspberry Pi biedt Seafile een serverpackage. Verder biedt Seafile een Server Professional Edition aan, dit is een betaalde versie. Op de website lezen we dat Seafile de server voor Linux test op Ubuntu, Debian en CentOS. De server is geschreven in Python en maakt naar keuze gebruik van MySQL, MariaDB of SQLite, waardoor wij vermoeden dat het ook wel op andere distributies zal kunnen draaien. Wij installeerden de vrije 64bits open source Linux versie vlotjes op een Linux LXC Container met een verse Debian Jessie installatie.

Apps

Voor de Linux desktop biedt Seafile een grafische app en een app met commandline interface. Het installeren gaat eenvoudig via het packagemanagement systeem van je distributie. Zo is er voor Ubuntu een ppa repository en kun je in Debian een repository aan je apt sources.list toevoegen. Hierna is het een kwestie van apt-get update en apt-get install om de client te installeren. Ook voor Fedora en Arch Linux zijn packages te downloaden. Seafile noemt deze laatste twee “community maintained” packages, dat wil zeggen dat deze niet door Seafile zelf worden gemaakt.

Voor Android en voor iOS kun je vanaf de officiële Play Store c.q. App Store de client kosteloos installeren. Android gebruikers kunnen ook bij F-droid.org een client ophalen. Wij installeerden de grafische app op ons Debian Jessie werkstation en de Android app op onze 7-inch Android tablet. 

Markdown notities

Naast de app die je op een client installeert, kun je ook gebruik maken van de webclient. Dit is een webpagina die je rechtstreeks vanaf de Seafile server in je browser opent. Je logt in met je gebruikersnaam en je wachtwoord en kunt dan bestanden via de browser down- en uploaden en delen.

Je kunt de webclient ook gebruiken om notities aan te maken. Je klikt op “New File”. Je geeft een bestandsnaam op, voor Markdown dient deze dient te eindigen met de extensie “.md”. Je krijgt nu een editor waarbij je links het bestand in platte tekst ziet en rechts in opgemaakte vorm. Om het schrijven in Markdown te vereenvoudigen, maak je gebruik van icons voor headers, bullits, hyperlinks etc. Wij hebben ook een bestand met de extensie “.txt” aangemaakt, je krijgt dan een normale platte tekst editor.

Steeds wanneer je het bestand edit en opslaat, wordt een nieuwe versie gemaakt. Je vraagt via de browser de lijst met versies op en krijgt dan de datum en tijdstip te zien waarop de betreffende versie is opgeslagen. Door uit deze lijst te kiezen, vraag je een oudere versie van het bestand op.

Libraries

Seafile organiseert je bestanden op basis van zogenoemde libraries. Elke library is afzonderlijk te synchroniseren en afzonderlijk te delen. Op je werkstation bestaat een library uit een directory in je home-gebied. Elke gebruiker krijgt standaard een persoonlijke library, genaamd “My Library” Je voegt hier zelf één of meer libraries aan toe. Een library vul je met bestanden en desgewenst maak je binnen een library een sub-directory-structuur aan.

Client-side versleuteling

Het is heel eenvoudig om een versleutelde library te maken. Dit is een subdirectory op je systeem, alles wat hierin komt, wordt vanaf de client versleuteld. Je maakt in de client een nieuwe library aan, en je vinkt daarbij het vakje “encrypted” aan. De client vraagt je nu een wachtwoord te kiezen en deze twee keer in te voeren.

Hierna worden de bestanden die je via deze library synchroniseert, eerst versleuteld en pas daarna naar de server geüpload. Op de client blijven de bestanden onaangetast. Wanneer je daarna bijvoorbeeld op je tablet deze library wilt synchroniseren, dan dien je daar eerst het wachtwoord in te voeren. Vervolgens werkt het net als een normale library, je kunt de lijst met bestanden bekijken en individuele bestanden opvragen en openen en bestanden toevoegen.

Het voordeel van client-side versleuteling is dat op de server uitsluitend de versleutelde bestanden komen te staan. Het wachtwoord dat nodig is om de bestanden te ontsleutelen, staat niet op de server. Seafile gebruikt een krachtig encryptie-protocol, zodat je bestanden goed beveiligd zijn.

De gebruikershandleiding van Seafile vermeldt overigens dat de metadata, zoals bestandsnamen, directory-structuur en de bestandsgrootte wel in klare tekst worden opgeslagen en eventueel door de beheerder gelezen kunnen worden. Gebruik je de webclient voor een versleutelde library, dan dien je uiteraard je wachtwoord aan de server op te geven. In verband met de werkbaarheid onthoudt het systeem je wachtwoord gedurende 60 minuten.

Delen van bestanden

Bestanden in Seafile kun je op verschillende manieren delen met anderen. Je kunt bijvoorbeeld een complete library delen met een andere gebruiker, naar keuze doe je dit met alleen lees-rechten of met lees- en schrijfrechten.

Een andere wijze van delen is een link te laten genereren naar een bepaald bestand. Via het dialoogscherm geef je aan of voor het openen van de link wel of niet een wachtwoord vereist is (en zo ja, welke dan). Verder kun je, indien gewenst, de levensduur van de link beperken tot een op te geven aantal dagen.

In plaats van een download-link kun je ook een upload-link laten genereren, met of zonder wachtwoord protectie. Met een upload-link geef je een derde het recht om bestanden aan je library toe te voegen, zonder dat die derde in je library kan kijken.

Wanneer je een library met een andere gebruiker gedeeld hebt, zelfs wanneer dat read only was, dan kan die andere gebruiker de library, of individuele bestanden daarin, weer delen met anderen.

Wanneer je een versleutelde library deelt met een andere gebruiker, dan dient deze ook het wachtwoord te kennen. Je hebt dus geen gebruikers-specifiek wachtwoord op zo’n library. Dit betekent dat alle gebruikers met wie je een versleutelde library deelt, het wachtwoord moeten weten. Het is raadzaam dit van te voren te bedenken.

Wanneer je met andere gebruikers van hetzelfde Seafile systeem bestanden of libraries deelt, dan kun je op verschillende manieren aangeven om welke gebruikers het gaat. Je kunt bij het delen individuele gebruikers opgeven. Deze kies je uit de lijst met alle bestaande gebruikers. Je kunt ook delen met een groep gebruikers. Iedere gebruiker maakt hierbij zelf zijn eigen groepen aan. Je maakt een groep aan en vervolgens voeg je daar bestaande gebruikers aan toe. Wil je gebruikers in bulk toevoegen, dan kan dat door het uploaden van een CSV-bestand. Wanneer je lid bent van een groep, die door iemand anders is aangemaakt, dan kun je zien uit welke gebruikers de groep bestaat.

Je kunt een library ook met iedereen delen. Hiermee maak je in feite een publieke folder, die door iedereen, die de weblink weet, bekeken kan worden. Je kunt ook hier weer kiezen voor alleen leesrechten of lees- en schrijfrechten en wel of geen wachtwoord-protectie.

 

Versiebeheer

Standaard staat Seafile zo ingesteld dat versiebeheer plaatsvindt binnen je libraries. Zodra een bestand in één van je libraries overschreven wordt door een nieuwe versie, vindt je in Seafile via de optie “History” zowel de oude als de nieuwe versie. Je kunt desgewenst teruggaan naar een oudere versie van het bestand. De beheerder kan deze optie uitzetten, bijvoorbeeld om schijfruimte te sparen. Dit is een systeem-brede keuze, die voor alle gebruikers gelijk is.

Gebruikersbeheer

Bij het installeren van Seafile bepaal je de inlog credentials van de beheerder. Dit zijn een e-mailadres en een wachtwoord. Daarna kun je als deze beheerder inloggen en gebruikers toevoegen. Je kunt individuele gebruikers toevoegen. Ook is het mogelijk om gebruikers te importeren met behulp van een CSV-bestand. Bij het aanmaken van een gebruiker geef je deze een initieel wachtwoord. Bij de eerste keer inloggen wordt de gebruiker gevraagd om een nieuw wachtwoord in te voeren. Het systeem controleert daarbij niet of je daadwerkelijk een ander wachtwoord invoert dan wel hetzelfde wachtwoord hergebruikt.

Seafile ondersteunt overigens ook het gebruik van LDAP en Active Directory. Dit hebben wij niet getest.

 

Nginx

Seafile raadt om veiligheidsredenen aan, de toegang tot de Seafile omgeving via een Nginx webserver te laten verlopen. Je kunt er dan voor kiezen om Nginx via een normale poort beschikbaar te stellen (poort 443 voor https-verbindingen) en op de achtergrond toch Seafile op poort 8000 te laten lopen. Het configureren van de Nginx server als proxy voor de Seafile server is eenvoudig en vereist maar een paar regeltjes in de Nginx-configuratiefile. In voorgaande nummers van Linux Magazine is dit vaker aan de orde geweest, bijvoorbeeld bij Java web-applicaties. Kijk deze nummers er even op na, anders kun je dit ook op internet vinden.

Gebruikersgemak

Op het moment dat binnen een organisatie tablets ingezet worden, neemt het gebruik van diensten zoals Dropbox meestal een enorme vlucht. Men wil graag de vergaderstukken op de tablet kunnen inzien en bestanden synchroniseren tussen tablet en het werkstation. De belangrijkste reden dat gebruikers voor dit soort diensten kiezen, is het gebruiksgemak. Je hoeft geen diepgaande IT kennis te hebben of een halve nerd te zijn om het te gebruiken. Je maakt een account aan, installeert een applicatie op je werkstation en op je tablet en je kunt aan de slag. Geen moeilijke toestanden en van hoog tot laag, iedereen kan ermee overweg.

Gelukkig biedt Seafile hetzelfde gebruiksgemak. Zonder dit zou het wel moeilijk worden om de gebruikers te verleiden om diensten, zoals Dropbox, links te laten liggen en voor deze veilige oplossing te kiezen.

Seafile draait op je eigen server, zodat je zelf de controle over je data houdt. Seafile biedt eenvoudig toe te passen, krachtige client-side versleuteling, wat extra veiligheid voor de gebruikers betekent. Het delen van bestanden is eenvoudig te doen. De beschikbaarheid van gemakkelijk te gebruiken apps voor zowel de desktop als de mobiele devices maakt veilige bestandssynchronisatie echt voor iedereen toegankelijk. Neem zelf de proef op de som. Een virtueel servertje heb je zo opgezet.