La synchronisation des contacts, agenda et autre PIMerie, dés lors qu'n GNU/Linux était de la partie, a de tout temps été un véritable enfer. Déjà à l'époque du Palm III c'était tout un poème pour que les deux environnements soient un tant soit peu synchrones. Aujourd'hui, que l'on se rassure, la synchronisation de cette vénérable périphérique passe à merveille, mais c'est pour du matos plus récent que ça coince. La faute à quoi ? Comme toujours à des protocoles pas ouvert que les développeurs du libre doivent comprendre, bidouiller et intégrer dans d'honorables projets comme OpenSync avec des passerelles vers synce histoire de prendre en compte les windowseries. Ça modprobe en tout sens, ça coince autant que ça peu et au final, soit les données sont en vrac de part et d'autre, soit rien ne s'est passé tout simplement.
Pourtant il existe bien un protocole ouvert et normalisé capable de synchroniser tout avec n'importe quoi, du moins en théorie. Et ce protocole miraculeux s'appelle SyncML...
Funambol, SyncML et OMA

La solution Funambol est donc une suite d'outils de synchronisation composée :
- D'un serveur OMA-DS (Data Synchronisation) permettant la synchronisation des données personnelles (contacts, agenda, TODO, système de fichier, etc).
- D'un serveur de "push" permettant d'obtenir, comme pour le blackberry, des notifications temps-réel dés la réception de nouveaux courriels. Personnellement cette fonction ne m'intéresse pas (je suis déjà bien assez notifié en simple pooling ;-) et j'ai plus dans l'idée d'exploiter pour cela certains fonctions cachées d'IMAP, mais ça c'est une autre histoire.
- De clients SyncML pour une série d'applications comme thunderbird, Sunbird, Android, Evolution, etc.
D'un point de vue "circulation des données", le système OMA-DS est basé sur un référentiel pivot qui, épaulé par une base de données, va être synchronisé avec un client SyncML. Le principe est donc un client pour Evolution qui va se synchroniser avec Funambol-DS, et ensuite un client pour android qui viendra plus tard faire la même chose. Les deux outils ne se parlent donc jamais directement.
D'un point de vue technique, le service DS de Funambol est une application WEB à déployer sur un serveur Apache Tomcat, en java donc. Une fois le service lancé, les clients pourront discuter avec lui en utilisant une simple connexion HTTP qui passe donc très facilement les pare-feux.
Mise en place du service Funambol
La méthode "rapide"

Vous allez tout d'abord devoir télécharger la dernière version du service Funambol qui est disponible sur la forge d'ObjectWeb. Ce que vous rechercher se trouve dans la section Funambol Bundle. Placez ensuite l'archive dans un dossier de votre choix, par exemple /opt et décompressez-la. Vous obtiendrez ainsi un dossier /opt/Funambol. Il ne reste alors plus qu'à lancer le service :
root#/opt/Funambol/bin/funambol startLancement de Funambol
Voilà, c'est terminé. Funambol est en route prêt à synchroniser vos périphériques à travers l'URL http://mon_serveur:8080/funambol/ds. Vous pouvez maintenant directement sauter au chapitre "Paramétrage du service" pour ajouter un nouvel utilisateur et commencer à synchroniser.
Approche plus en profondeur

Ceci étant dit, il est important de cerner la finalité du besoin et dans 99% des cas, la synchronisation se fera chez soi avec l'ensemble des composants installés sur un serveur si vous en avez un, ou sur la station de travail. Dans ce qui suit, j'utilise mon architecture domestique en installant le service Funambol, sur le serveur local qui comprend déjà une base de données PostgreSQL. L'ouverture de la synchronisation sur le réseau publique est une option que l'abordera plus loin mais dont je n'ai pour l'instant pas l'usage.
Plus concrètement, Funambol exploite une architecture Java/J2EE. En d'autre termes, il s'agit d'un gros bazar relativement casse pied à mettre en oeuvre nécessitant (au minimum) une pile Java et un serveur TomCat. Comme son nom le laisse présager, ce "Bundle" contient tout ce qu'il faut pour mettre en oeuvre le service :
- L'ensemble des applications pré-compilées.
- Une interface graphique d'administration à distance.
- Un service TomCat 6.x
- Une base de donnée Hypersonic (aka HSQLDB)
- Un JRE 1.5
Notre objectif est donc d'utiliser le moins possible les composants du Bundle pour se reposer au maximum sur les équivalents fournis dans votre distribution GNU/Linux. Pour l'exemple, nous allons utiliser
- Un service de base de données PostgreSQL.
- Le service Apache Tomcat 6 de notre distribution.
- La pile Java OpenJDK 6 de la distribution.
Au final, ne restera du Bundle que l'application d'administration et la WebApp que l'on va injecter dans notre TomCat.
Mais avant d'aller plus loin, faite comme pour l'installation rapide, téléchargez et décompressez le Bundle Funambol dans le dossier /opt de votre serveur.
Installation de Java/TomCat

# Installation de l'OpenJDK 6.0 en mode développement (nécessaire pour Tomcat)root#urpmi java-1.6.0-openjdk-devel...root#java -versionjava version "1.6.0_0"OpenJDK Runtime Environment (IcedTea6 1.5) (mandriva-0.20.b16.0.3mdv2009.1-x86_64)OpenJDK 64-Bit Server VM (build 14.0-b08, mixed mode)# Installation de Tomcat6urpmi ecjurpmi tomcat6# Installation de la console d'administration de tomcat (optionnel mais pratique)urpmi tomcat6-admin-webappinstallation de l'environnement Java/Tomcat
Ceci fait, tomcat et java sont maintenant en place. Pour les javaistes qui voudraient retrouver leurs petits, l'installation se trouve dans le dossier /usr/share/tomcat6 où tous les dossiers classiques (webapps, logs, conf, etc.) sont symlinkés :
# ls -la /usr/share/tomcat6/total 12drwxr-xr-x 3 root root 4096 2009-10-10 02:30 ./drwxr-xr-x 109 root root 4096 2009-10-10 02:31 ../drwxr-xr-x 2 root root 4096 2009-10-10 02:30 bin/lrwxrwxrwx 1 root root 20 2009-10-10 02:30 conf -> ../../../etc/tomcat6/lrwxrwxrwx 1 root root 31 2009-10-10 02:30 lib -> ../../../usr/share/java/tomcat6/lrwxrwxrwx 1 root root 24 2009-10-10 02:30 logs -> ../../../var/log/tomcat6/lrwxrwxrwx 1 root root 31 2009-10-10 02:30 temp -> ../../../var/cache/tomcat6/temp/lrwxrwxrwx 1 root root 32 2009-10-10 02:30 webapps -> ../../../var/lib/tomcat6/webapps/lrwxrwxrwx 1 root root 31 2009-10-10 02:30 work -> ../../../var/cache/tomcat6/work/Les dossiers de tomcat dans la distribution
Avant de lancer le serveur, nous devons modifier les utilisateurs ayant accès à la console d'administration (si vous l'avez installée). Pour cela, vous devez éditer /etc/tomcat6/tomcat-users.xml pour obtenir un fichier comme ceci :
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="manager"/>
<user username="tomcat" password="tomcat" roles="tomcat,manager"/>
</tomcat-users>Les utilisateurs de tomcat
Ceci fait, nous allons préparer un peu le travail qui va suivre en ajoutant au lancement de Tomcat les options nécessaires à Funambol. Je sais, c'est un peu crétin mais je n'y peux pas grand chose. Funambol a besoin que Tomcat connaisse son dossier de base...
Pour cela, éditez le fichier /etc/sysconfig/tomcat6 et changez la ligne JAVA_OPTS comme ceci
JAVA_OPTS="-Dfunambol.home=/opt/Funambol -Dfile.encoding=UTF-8 -Djava.library.path=/opt/Funambol/ds-server/lib/x86_64 -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"Les options java nécessaires à Funambol
Ensuite, nous alons recopier les librairies nécessaires au service Funambol dés le démarrage de Tomcat. Pour cela, nous allons nous placer dans le dossier /opt/Funambol/tools/tomcat/lib pour y faire notre marché :
root#cd /opt/Funambol/tools/tomcat/libroot#cp core-framework-8.0.1.jar server-framework-8.0.0.jar log4j-1.2.14.jar /usr/share/tomcat6/liblibrairies bootstrap pour Funambol
C'est pas fini, il nous faut mainetnant modifier le fichier /etc/tomcat6/context.xml pour ajouter les datasources nécessaires au service :
<Resource name="jdbc/fnblds" auth="Container" type="javax.sql.DataSource" factory="com.funambol.server.db.DataSourceFactory" />
<Resource name="jdbc/fnblcore" auth="Container" type="javax.sql.DataSource" factory="com.funambol.server.db.DataSourceFactory" />
<Resource name="jdbc/fnbluser" auth="Container" type="javax.sql.DataSource" factory="com.funambol.server.db.DataSourceFactory" />À insérer dans la balise Context, du fichier /etc/tomcat6/context.xml
Maintenant vous pouvez lancer tomcat par /etc/init.d/tomcat6 start et vérifier que tout fonctionne en allant à l'adresse http://mon_serveur:8080 avec un navigateur web. Vous arrivez alors sur la page d'accueil de tomcat et vous pouvez cliquer sur le lien Tomcat manager. Là saisissez l'identifiant tomcat et la même chose pour le mot de passe. Vous aboutissez alors sur la console d'administration des applications dans laquelle ne devrait se trouver que host-manager et manager (ce que nous utilisons en ce moment même).
Mise en place de la base de données
La base de donnée que nous allons utiliser ici est Postgresql mais tout ceci peut fonctionner avec MySQL ou Hypersonic (ce qui est le défaut).
Cela commence par la simple création d'une base de données. Ici aussi, c'est sur un LAN, on ne va pas s'embrasser de mots de passe compliqués mais simplement prendre l'utilisateur standard postgres. Nous allons aussi en profiter pour installer le pilote JDBC pour postgresql
root#createdb -U postgres funambolroot#urpmi postgresql-jdbcCréation de la base Funambol
Maintenant nous devons modifier les paramètres de l'installateur de Funambol pour prendre en compte cette base. Pour cela, éditez le fichier /opt/Funambol/ds-server/install.properties pour qu'il ressemble à ceci
dbms=postgresql
jdbc.classpath=/usr/share/java/postgresql.jar
jdbc.driver=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost/funambol
jdbc.user=postgres
jdbc.password=install.properties
Avant de sauvegarder le fichier, pensez à commenter les déclarations pour la base de données Hypersonic de sorte à éviter les conflits.
Installation du service Funambol-DS
Funambol est fourni avec un script permettant d'automatiquement créer, paramétrer, installer et déployer l'application Funambol sur Tomcat. C'est pour cela que nous devons préalablement définir préalablement l'emplacement de Tomcat par un export J2EE_HOME=/usr/share/tomcat.

# Nous commençons par définir les chemins accès à Java et à tomcatroot#export JAVA_HOME=/usr/lib/jvm/jreroot#export J2EE_HOME=/usr/share/tomcat6# Lancement de l'installation#cd /opt/Funambol/bin#./install[echo] Funambol Data Synchronization Server will be installed on the Tomcat 6.0.x application server[input] The Funambol Data Synchronization Server installation program can now create the database.[input] You can skip this step if you have already a valid database created.[input] If you choose 'y' your existing data will be deleted.[input] Do you want to recreate the database?[input] (y,n)...Installation du service Funabol
Après avoir tapé un paquet de fois sur y, le service tomcat a normalement été nourris de trois nouvelles applications : /context, /funambol et /webdemo. La dernière est sensée être une sorte de myFunambol ligne pas chez moi ça plante lamentablement et je n'ai pas eu le courage d'aller comprendre pourquoi.
Alors pour alléger la mémoire, nous allons retourner dans le manager de tomcat et cliquer sur Undeploy pour chaque WebApp non utile (webdemo, sample, examples dans mon cas).
Nous pouvons maintenant vérifier que Funambol-DS est bien disponible en allant directement à l'URL http://mon_serveur:8080/funambol/ds qui doit nous renvoyer un résultat qui ressemble à ceci :
Funambol Data Synchronization Server v.8.0.0Man=FunambolMod=DS ServerSwV=8.0.0HwV=-FwV=-OEM=-DevID=funambolDevTyp=serverVerDTD=1.2UTC=trueSupportLargeObjs=trueSupportNumberOfChanges=trueExt=X-funambol-smartslowData Synchronisation service activé
Interfaçage avec Apache

Il y a deux manières (à ma connaissance) de connecter un serveur apache à un serveur tomcat. D'un côté nous avons le bon vieux reverse-proxy, simple et efficace, et de l'autre mod_jk, le connecteur spécifiquement conçu pour faire transiter les ordres à haut débit. Pour information, mod_jk utilise un protocole spécifique entre apache et tomcat appelé AJP13 qui a pour caractéristique d'être binaire, et donc compact. S'il s'agit de mettre en oeuvre Funambol pour une entreprise, mod_jk n'est même pas une option. Mais nous concernant, pour une synchronisation de temps à autre à un usage purement personnel, c'est un petit peu overkill. Ce sera donc le reverse proxy.
Pour mettre en oeuvre un reverse-proxy avec apache, la procédure est très simple. Sélectionnez un vhost et ajoutez le code suivant
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
ProxyPass /mon_ds http://localhost:8080/funambol/ds
ProxyPassReverse /mon_ds http://localhost:8080/funambol/dsAjout à Apache d'un reverse-proxy vers Funambol
Pour que ceci fonctionne il faut installer le module apache mod_proxy. La syntaxe qui précède déclare valide l'utilisation du proxy quelle que soit l'URL et quelle que soit la source. C'est "un peu" ouvert mais sachant que Funambol dispose de son propre système d'authentification ce n'est pas un problème en soi.
Les deux lignes qui terminent la définition déclarent d'abord un accès entre l'URL apache /mon_ds et l'URL tomcat http://localhost:8080/funambol/ds, puis un accès dans l'autre sens entre ces deux mêmes URL.
Après un redémarrage de tomcat, vous pouvez vérifier qu'en allant à l'adresse http://mon_serveur/mon_ds, vous obtenez bien le message d'accueil de Funabol que nous avons déjà vu plus haut.
Le service est maintenant opérationnel sur le LAN en passant par http://mon_serveur/funambol/ds ou, sur le WAN par http://mon_serveur/mon_ds. Passons à la phase administration.
Paramétrage du service

Lorsque l'archive est décompressée, vous n'avez plus qu'à aller dans le dossier /opt/Funambol/admin/tools et lancer l'application funamboladmin. Pour ceux qui comme moi ont une architecture 64bits, l'application ne pourra pas se lancer car elle utilise le JDK fourni dans le Bundle et bien évidement compatible I32. Cela se règle en spécifiant un paramètre supplémentaire --jdkhome /usr/lib/jvm/jre pour utiliser le java de la distribution.
La première chose à faire est de se connecter au DS par File/Login. Vous devez alors saisir l'adresse IP ou le nom qualifié du serveur qui héberge Funambol. Attention, vous allez accéder au serveur tomcat, il n'est donc pas question d'utiliser ici l'adresse du serveur apache mais bien celle de la machine qui héberge tomcat.
Ensuite saisissez le User name ('admin' par défault) et le Password ('sa' par défault), puis valider. Si tout c'est bien passé jusqu'ici, vous devriez voir apparaître votre serveur dans l'arborescence.
Développez cette arborescence jusqu'à voir l'entrée Users puis par un click droit, ajoutez un nouvel utilisateur (username, password, etc.) en prenant soin de donner à cet utilisateur le rôle User. Notez bien l'identifiant et le mot de passe choisi, ils vont nous servir bientôt.
Le serveur est maintenant fin prêt, vous pouvez sortir de l'administration et nous pouvons passer à la synchronisation.
Synchronisations
Partir du vide
Après quelques essais infructueux, la meilleur manière que j'ai trouvé d'initialiser le système est de partir avec aucune donnée dans chaque client que l'on cherchera à synchroniser. Comme votre évolution doit contenir plein de rendez-vous et de contacts, il faut donc commencer par faire une sauvegarde.
# sauvegarde des contacts
##/usr/lib64/evolution/2.28/evolution-addressbook-export > ~/Desktop/adresses.vcf
# sauvegarde de l'agenda local. Si vous avez d'autres agenda, faites de même avec eux.
##cp ~/.evolution/calendar/local/system/calendar.ics ~/Desktop/calendar.icsSauvegarde des données d'évolution
Ceci fait, et après avoir vérifié 40 fois que vous avez bien tout sauvegardé (je décline toute responsabilité en cas de pépin), détruisez tous vos contacts sous évolution, et faites de même avec vos données d'agenda. Ensuite quittez évolution, tuez le démon evolution-data-server de sorte à ce qu'aucune données ne reste en cache puis relancez évolution. Il doit maintenant être totalement vierge.
Faites de mêmes avec les autres applications que vous souhaitez connecter à Funambol (Android, thunderbird, sunbird, etc.). Tout doit être sauvegardé et complètement vide. Lorsque c'est fait, nous pouvons passer à la synchronisation d'évolution.
Funambol et évolution
Pour synchroniser évolution avec le serveur Funambol, nous allons utiliser de client SyncML
Sous Mandriva, je n'ai pas trouvé de paquet correspondant dans les dépôts, mais la compilation est relativement aisée
root#sudo urpmi lib64edataserver-develroot#wget http://downloads.syncevolution.org/syncevolution/sources/syncevolution-0.9.tar.gzroot#tar -xvf syncevolution-0.9.tar.gzroot#cd syncevolution-0.9root#./configure --prefix=/usrroot#makeroot#sudo make installCompilation de SyncEvolution
Ceci fait le binaire syncevolution devrait être disponible.
L'étape suivante consiste à générer un serveur à SyncEvolution, cela se fait par la commande syncevolution -c funambol qui va créer la configuration pour le serveur du même nom dans le dossier ~/.config/syncevolution/funambol. Ensuite nous allons modifier le fichier config.ini de sorte à utiliser les identifiant de notre utilisateur, mais aussi l'URL vers notre service Funambol. Cela doit donner quelque chose comme ceci (si vous avez mis en place le reverse-proxy, utilisez l'URL que vous avez déclarée dans le vhost) :
syncURL = http://mon_serveur:8080/funambol/ds/
username = mon_user
password = mon_passwordfichier config.ini de syncevolution
Ceci fait, enregistrez la configuration. Maintenant que nous avons tout vider, il est temps de lancer notre synchronisation
#syncevolution funambolLocal data changes to be applied to server during synchronization:*** todo ***no changes*** memo ***no changes*** calendar ***no changes*** addressbook ***no changes...Synchronization successful.Changes applied during synchronization:+---------------|-------ON CLIENT-------|-------ON SERVER-------|-CON-+| | rejected / total | rejected / total | FLI || Source | NEW | MOD | DEL | NEW | MOD | DEL | CTS |+---------------+-------+-------+-------+-------+-------+-------+-----+| addressbook | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0 || two-way, 0 KB sent by client, 0 KB received || item(s) in database backup: 0 before sync, 0 after it |+---------------+-------+-------+-------+-------+-------+-------+-----+| calendar | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0 || two-way, 0 KB sent by client, 0 KB received || item(s) in database backup: 0 before sync, 0 after it |+---------------+-------+-------+-------+-------+-------+-------+-----+| memo | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0 || two-way, 0 KB sent by client, 0 KB received || item(s) in database backup: 0 before sync, 0 after it |+---------------+-------+-------+-------+-------+-------+-------+-----+| todo | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0/0 | 0 || two-way, 0 KB sent by client, 0 KB received || item(s) in database backup: 0 before sync, 0 after it |+---------------+-------+-------+-------+-------+-------+-------+-----+| start Sun Oct 11 00:11:59 2009, duration 0:01min || synchronization completed successfully |+---------------+-------+-------+-------+-------+-------+-------+-----+Première synchronisation
Voilà, première synchronisation effectuée. Ensuite il faut faire de même avec les autres clients...
Funambol et Android

Pour revenir à Funambol, il existe un client pour android directement sur le Market. Cependant il est très limité car ne gère que les contacts. Pour disposer de la synchronisation des agendas, il faut aller faucher la version de dev. Pour la compiler, vous aurez besoin d'installer préalablement les paquets ant, ant-nodeps, subversion, java-1.6.0-openjdk-devel, javacc et bien évidement le SDK d'android que vous devez décompresser, par exemple en /opt/android-sdk. Ceci fait, vous pouvez récupérer la version de développement de client en passant par subversion:
# Laissez le mot de passe videroot#svn co --username=guest https://android-client.forge.funambol.org/svn/android-client/trunk/android-client...root#cd android-clientroot#cp build.properties.sample build.propertiesRécupération de la version de développement du client Funambol pour Android
Pour pouvoir compiler, il nous faut d'abord modifier le fichier build.properties pour que la propriété sdk-folder pointe sur le dossier où vous avez installé le SDK pour Android.
sdk-folder=/opt/android-sdk
android.sdk.version=1.5
javacchome=/usr/share/javabuild.properties

# adb install -r android-client/bin/FunambolSyncClient-debug.apk1105 KB/s (261724 bytes in 0.231s)pkg: /data/local/tmp/FunambolSyncClient-debug.apkSuccessInstallation de la version de développement du client Funambol pour Android
Maintenant sur le terminal vous pouvez lancer l'application Sync. Pressez la touche Menu, et choisissez Settings. Maintenant vous pouvez saisir les coordonnées du service comme pour syncevolution. Pour lancer la synchronisation des contacts, pressez la barre correspondante deux fois (idem pour les agendas).
Synchronisations réelles
Maintenant que tout est en place, il ne nous reste plus qu'à importer nos contacts sauvegardés dans évolution, lancer SyncEvolution pour synchroniser avec Funambol et enfin synchroniser le terminal Android pour y récupérer les contacts. Idem pour les agendas.
Conclusion
C'est bien connu, la liberté n'a pas de prix et nous en avons fait la preuve ici. Un tutoriel pour utiliser un service "gratuit" aurait en comparaison pris une dizaine de lignes tout au plus. Mais quel plaisir de disposer de SON serveur avec SES données, sans craindre qu'elles finissent un jour dans la nature. Et ceci sans compter que la vitesse de synchronisation est carrément pas la même...
Mais au delà de ces considérations paranoïdes, Funambol est un fantastique outil pour maintenir nos données personnelles synchrones entre plusieurs machines (desktop, laptop, téléphone, etc.). Et somme toute, une fois que l'on sait comment s'y prendre, ce n'est pas si compliqué que cela, non ?
Maintenant il reste encore des "trous" dans cette synchronisation. Pour faire bien, il faudrait un client pour RoundCube, ce qui semble déjà possible avec Horde. De même, la synchronisation des favoris semble un étrange oubli dans la liste des informations personnelles.
Justement, je me penchais sur la question de mon côté. Merci pour les infos.
De rien, n'hésite pas à faire des retours si tu mets cela en oeuvre, il y plein de choses que je n'ai pas encore exploité là dedans (notamment les synchro de système de fichier)
Les articles de la mort !
Félicitation dans un 1° temps pour la forme, et dans un 2° temps pour le fond !
Depuis que le livre est publié, c'est comme à la belle époque !
Merci c'est gentil :) C'est vrai que cette histoire de bouquin m'a pris un peu de temps...
Woa, ça y va fort c'est dernier temps ;)
Sympa cette architecture mais ça n'a pas l'air trivial à mettre en place. Pour une entreprise soit, mais pour un particulier je comprends que certains se tournent plutot vers des services 'clé en main'. Maintenant je suis de ton avis quant à la confidentialité des données mais n'y a-t-il pas plus simple ? genre une synchro via git/ssh ? (non testée).
Heu au fait les données sont elles cryptées ?
Ben je m'organise et puis j'ai à nouveau un peu de temps, j'en profite ;-)
Ben disons que je le cherche un peu aussi, ça me faisait chier d'utiliser leur pile java, leur base et leur service tomcat. Sinon, comme je le dit au début, il suffit de décompresser l'arche et de lancer le service funambol, difficile de faire plus direct :) Je vais rajouter le "fasttrack" au début du tuto pour pas que les gens prennent peur :)
Sinon des syncro git/ssh entre un android et évolution ? Là je vois pas comment faire...
Non, les données en base ne sont pas cryptées.
... Sinon des syncro git/ssh entre un android et évolution ? Là je vois pas comment faire...
Ben ouai j'suis con, j'imaginais même pas que quelqu'un pouvais utiliser plusieurs clients de messagerie :) Je me voyais très bien faire un pull/push d'un .evolution ou d'un .claws ou autre ...
... Non, les données en base ne sont pas cryptées. ...
Ah non je ne pensais pas aux données en base mais à leur transfert, il semble que ce soit de l'http d'où ma quastion.
Ben rien que ma petite personne utilise un thunderbird/sunbird sur un poste, son Android et un evolution sur un autre. C'est tout l'intérêt de cet outil, ça prend en charge l'hétérogénéité en se basant sur un pivot. Cecit étant dit, ça va plus loin que cela puisque la norme autorise la synchronisation de systèmes de fichier, le bon vieux concept de breifcase remis au goût du jour, et qui va bien me servir, si j'arrive à l'utiliser, sur mon portable ;-)
Pour ce qui est du cryptage, non ça ne l'est pas par défaut. Ceci dit, tomcat a tout ce qu'il faut pour faire du SSL mais il est rare que l'on s'amuse à coller un conteneur de servlets en live sur le net. Généralement on utilise la passerelle mon_jk et le SSL est du coup porté tranquillement par apache.
un petite coquille, la commande pour créer le fichier de config pour funambol:
(le -c) :)
Oups :) corrigé :)
Excellent ! Ça fait partie des services que je souhaitais mettre en place sur mon nœud internet. Mais ce qui me gêne un peu, c'est que ça soit du Java et du Tomcat. Si à tout hasard tu connaissais des solutions qui font plus ou moins la même chose mais qui puissent fonctionner sur un simple serveur lighttpd et surtout pas de java, ça serait parfait :)
Ah non, ça j'ai pas. J'ai un peu cherché des serveurs syncml en natif mais nada. Si tu trouves, fais le moi savoir. j'ai beau sensé être un "expert" java, je ne suis pas un fan non plus, c'est peut-être pour cela d'ailleurs ;-)
Ceci étant dit c'est pas java le problème, mais plutôt la "tétra-chiée" de gluttes J2EE qu'on se sent obliger de coller sur ce type de dev. Je suis persuadé qu'en JDBC de base, avec chtit serveur HTTP de rien du tout et un parser XML light, tu peux faire la même chose en 100x plus simple. Mais bon, c'est un monde où les gens adorent se la compliquer...
question à 10 roubles (ou plus) :
Je cherche un truc de synchronisation de mes fichiers audios qui évoluent (donc volumineux)
j'ai pensé à un SVN (mais reprendre une version d'un fichier binaire, donne du bizarre par moment, en plus, là je parle de 500go de données environ)
y'a toujours des notions de médiathèques, mais ça gère plus les doublons que les évolutions
si quelqu'un à une idée je suis preneur...
Oui Subversion tu oublies, ça va vite exploser à cause des deltas. Après tout dépend des environnements que tu cherches à synchroniser. Si c'est pour du backup, rsync est très bien. Si c'est pour un ordinateur portable, j'explore en ce moment la piste du nouveau cachefs (kernels 2.6.31).
c'est pour un mix backup / versionning justement
genre je veux récupérer le sample d'il y'a 10ans fait sur amiga
pour le moment, j'entasse toutes les versions, meme les versions "developpement" ou "test" qui me serviront plus
peut être dans le matos sonore "pro" celà existe nativement ? je vais explorer
mais bon, je préferai faire ça à la bonne franquette dans mon garage
Ahh c'est très différent comme usage. Dans ce cas subversion est surtout utile pour avoir les différents âges d'un même fichier. Sinon moi je conseillerais la bonne vieille organisation nom_projet/date :) Et rsync pour le backup. Bref, j'ai plus confiance un un nommage bien fait qu'en un quelconque outil qui existera plus dans 10 ans.
Pour combler "le trou" roundcube, j'utilise personnellement un autre "marteau piqueur" : zimbra. Funambol me sert pour faire la synchro contact/agenda entre zimbra, mon telephone, thunderbird... Zimbra me permet d'avoir un thunderbird-like en ligne : il me permet de parametrer des comptes externes, et donc de n'avoir qu'un seul webmail pour tous mes comptes mails.
Wow, Zimbra, carrément... Et côté mise en oeuvre ça donne quoi ? Simple ? Complexe ? Demande une formation ? Je ne sais pas bien pourquoi cet outil me fait assez peur...
En tout cas il est assez énorme !!! (voir la demo ici : http://www.testzimbra.com/zimbraDemo/public/ValidateDemoCreation.jsp) Il permet d'intégrer pleins de choses comme le partage de calendrier, le partage et le versioning de document... un veritable outil de collaboration entre utilisateur. Une solution qui peut être mise en place en entreprise. D'ailleurs je vais essayer de migrer vers zimbra dans quelques temps...
Pour l'utilisation que j'en fait c'est assez simple à mettre en place et à maintenir. Mais c'est vraiment le marteau piqueur pour ecraser la mouche ! Je ne m'en sert que pour le carnet d'adresse/agenda/mail externe ! Alors qu'il peut gerer un serveur mail complet (smtp/imap/pop/anti-spam/anti-virus...), le partage de document, etc...
Pour la mise en place j'ai suivi ce tuto : http://www.modulaweb.fr/blog/2009/02/installation-de-funambol-couple-a-z...
Par contre mon serveur est pas assez costaud pour faire tourner les deux, donc funambol est en local. Il doit être possible de mutualiser les ressources (tomcat,bdd etc...)
Le tuto est super sauf que j'arrive plus a configurer autre chose que SyncEvolution. Genre en utilisant le service de funambol, je pouvais aussi synchronisé mon téléphone...
Quelqu'un à une idée?
Intéressant cet article !!! Funambol est surement l'outil que je cherche depuis un sacré moment. J'ai juste une question, ca consomme quoi en ressources (Mémoire et Cpu) ? Je pose la question car mon serveur est chez gandi hébergement (une part pour ceux qui connaissent). Pour l'utilisation, je compte synchroniser uniquement mes données personnelles, donc 1 utilisateur.
En CPU rien du tout tant qu'il est en attente. En charge il monte chez moi à 30% (sur un des cores). Côté mémoire, il tiens sur une VM que j'ai restreinte à 64mo.
Bonjour,
intéressant ton article, j'aurai aimé tomber deçu avant de faire mon install, mais bon elle fonctionne. Cependant j'essaie de faire une chose qui n'a pas l'air triviale. Je voudrais que la transmission de l'authentification et des données se face de façon sécurisée et donc tout passer via du https. J'ai beau essayer de modifier la conf de mod_jk, etc à chaque fois je me retrouve avec une erreur 302 lors de la tentative de sync.
Quelqu'un à une idée ?
Slts
Bonjour,
Je sèche, après avoir tenté une install automatique, qui ne fonctionne pas donc, je me suis lancé dans l'installation des éléments un par un comme décrit dans ce tuto. Et après la phase
Lancement de l'installation
#cd /opt/Funambol/bin
#./install
Tout a l'air de bien se passé, mais rien n'apparait sur la liste es applications du serveur tomcat.
je l'ai refait une douzaine de fois, rien ne change. dans /usr/share/tomcat6/wepapps il y a bien le rep "webdemo" et "funambol.war".
Dans le log de tomcat6 il y a les erreurs suivantes qui disparaissent si je laisse la partie modifiée pour prendre en compte "les datasources nécessaires au service". Si je commente l'ajout de ces datasource, plus d'erreurs, mais pas de service non plus !
9 mai 2010 17:08:46 org.apache.catalina.core.NamingContextListener addResource
ATTENTION: Failed to register in JMX: javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFact$
javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
at com.funambol.server.db.DataSourceFactory.getObjectInstance(DataSourceFactory.java:124)
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:140)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
at org.apache.naming.NamingContext.lookup(NamingContext.java:793)
at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
at org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1020)
at org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:629)
at org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:237)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4377)
at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1244)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1342)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
at com.funambol.server.db.DataSourceFactory.getObjectInstance(DataSourceFactory.java:122)
... 20 more
-----------
J'installe tout ca sur une debian sqeeze.
Merci de ton/votre aide
Même topo pour moi, apparement, il manque deux jar files à Tomcat dans debian squeeze ... en copiant tomcat-dbcp.jar et hssqldb.jar depuis /opt/Funambol/tools/tomcat/lib dans /usr/share/tomcat/lib, l'erreur ci dessus disparait - mais il y a encore quelque chose qui ne va pas.
J'ai l'impression qu'il y a une confusion entre /var/lib/tomcat6/webapps at /usr/share/tomcat6/webapps ...
Amicalement
Francois
bonjour
J'aissai vaienement de compiler ce programe avec le sdk 05 android ça be marche pas le fichier de configuration build.xml me renvoie des héreures
Merci d'avance
bonjour
j'ai in problème de compilation du client, je respecte le tuto et le ant me renvoi 2 erreurs : build.xml:407: The following error occurred while executing this line:
et build.xml:188: Problem: failed to create task or type foreach, Cause: The name is undefined.
la première constatation est que le SDK Android a énormémant évolué pour autant j'éssai de le compiler sur un SDK 1.6
2 je respecte aussi l'explication du readme.txt du client funambol
le dernier changeslog date du 21 05 2010 et ne précise pas version de la plate forme de compilation
je bloque depuis 15 jours sans solution
+1
Même problème ... si qq a une idée ..
d'avance merci
En effet, il faut que /usr/share/tomcat6/webapps soit un lien vers /var/lib/tomcat6/webapps (après avoir déplacé le contenu bien sur)
Ensuite un petit
"chown -R tomcat6:tomcat6 /opt/Funambol/"
Ensuite on voit les application dans le manager ...
Francois
Poster un nouveau commentaire