Seafile
Seafile è una soluzione di sincronizzazione e condivisione di file open-source pensata per un’alta affidabilità. Con Seafile puoi sincronizzare, condividere e collaborare.
Costruire un prodotto di sincronizzazione dei file altamente efficiente e affidabile non è un compito banale. Il modello di dati e il protocollo di sincronizzazione di Seafile sono progettati appositamente per implementare una sincronizzazione dei file rapida e affidabile. Grazie a questo design, Seafile può sincronizzare 10 mila piccoli file in 1 minuto. Con oltre 6 anni di utilizzo nel mondo reale da parte di oltre 1 milione di utenti, Seafile è diventato molto stabile e affidabile. Le cronologie dei file e le istantanee delle librerie consentono di ripristinare facilmente qualsiasi file e cartelle, in un momento specifico.
Tra le funzionalità offerte da Seafile troviamo:
- sincronizzazione file;
- cifratura lato client;
- prestazioni scalabili;
- wiki intergrata;
- applicazioni mobile, desktop;
- drive virtuale.
Mani in pasta
E’ possibile installarla on premise e tra le modalità troviamo anche docker.
Sul sito del produttore troviamo un file docker-compose che è facilmente adattabile per essere utilizzato avviato con portainer.
Esempio per portainer
version: '3.0'
services:
db:
image: mariadb:10.6
environment:
- MYSQL_ROOT_PASSWORD=db_dev # Requested, set the root's password of MySQL service.
- MYSQL_LOG_CONSOLE=true
volumes:
- /opt/docker/seafile-mysql/db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store.
networks:
- seafile-net
memcached:
image: memcached:1.6.18
entrypoint: memcached -m 256
networks:
- seafile-net
seafile:
image: seafileltd/seafile-mc:latest
ports:
- "80:80"
volumes:
- /opt/docker/seafile-data:/shared # Requested, specifies the path to Seafile data persistent store.
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=db_dev # Requested, the value shuold be root's password of MySQL service.
- TIME_ZONE=Etc/UTC # Optional, default is UTC. Should be uncomment and set to your local time zone.
- [email protected] # Specifies Seafile admin user, default is '[email protected]'.
- SEAFILE_ADMIN_PASSWORD=asecret # Specifies Seafile admin password, default is 'asecret'.
- SEAFILE_SERVER_LETSENCRYPT=false # Whether to use https or not.
- SEAFILE_SERVER_HOSTNAME=files.dominio.it # Specifies your host name if https is enabled.
depends_on:
- db
- memcached
networks:
- seafile-net
networks:
seafile-net:
NB: Mi raccomando le password e l’email del primo admin.
Backup
Sono disponibili delle linee guida per chi utilizza docker-compose. In pratica si tratta di fare dei dump dei db e copia dei file su file system.
## Databases
# docker exec -it seafile-mysql mysqldump -uroot --opt ccnet_db > ccnet_db.sql
# docker exec -it seafile-mysql mysqldump -uroot --opt seafile_db > seafile_db.sql
# docker exec -it seafile-mysql mysqldump -uroot --opt seahub_db > seahub_db.sql
## Files
# rsync -az /opt/seafile-data/seafile /opt/seafile-backup/data/
# cd /opt/seafile-backup/data && rm -rf ccnet
Ripristino
## Databases
# docker cp /opt/seafile-backup/databases/ccnet_db.sql seafile-mysql:/tmp/ccnet_db.sql
# docker cp /opt/seafile-backup/databases/seafile_db.sql seafile-mysql:/tmp/seafile_db.sql
# docker cp /opt/seafile-backup/databases/seahub_db.sql seafile-mysql:/tmp/seahub_db.sql
# docker exec -it seafile-mysql /bin/sh -c "mysql -uroot ccnet_db < /tmp/ccnet_db.sql"
# docker exec -it seafile-mysql /bin/sh -c "mysql -uroot seafile_db < /tmp/seafile_db.sql"
# docker exec -it seafile-mysql /bin/sh -c "mysql -uroot seahub_db < /tmp/seahub_db.sql"
## Files
# cp -R /opt/seafile-backup/data/* /opt/seafile-data/seafile/
Extra
Dalla versione 10.0 è possibile eseguire Seafile come utente non privilegiato e per farlo basta aggiungere la property “NON_ROOT=true” nel file docker-compose. Se avete utilizzato docker-compose vi basterà modificare il file
seafile:
...
environment:
...
- NON_ROOT=true
...
creare l’utente sulla macchina host
# useradd --home-dir /home/seafile --create-home --uid 8000 --gid 8000 --shell /bin/sh --skel /dev/null seafile
e riavvialo lo stack
# docker-compose down
# docker-compose up -d
Extra (bis)
Non dimentichiamoci mai di mettere al sicuro le nostre installazioni esposte con Crowdsec .
Le opinioni in quanto tali sono opinabili e nulla ti vieta di approfondire l’argomento.
Risorse: