Installation de OwnCloud avec Mysql sous debian 7

11 mars 2014 | Posted in Owncloud, planet-libre | By

Ha le cloud, la tête dans les nuages, le nuage maîtrisé comme dirait l’autre. La grosse révolution qui en faite n’en est pas une. La vrai révolution se passe plus au niveau de la simplicité d’utilisation pour l’utilisateur lambda grâce à des applications clientes qui se charge de synchroniser vos données plutôt que du coté serveur !!!

Lors de l’article précédent je vous montrais l’intérêt financier pour une société de mettre en place un système owncloud plutôt que de choisir une solution propriétaire comme dropbox ou google drive.

Voyons maintenant comment installer owncloud.

Installation

Préambule

Nous sommes sur une Vm avec 4Go de Ram, un disque dur de 150Go et deux fois deux cœur.
J’installe une debian wheezy 64 bit avec un un disque en partition LVM.

Préparation .

Bien que owncloud propose un paquet pour faciliter l’installation il va falloir avant installer quelques paquets util.

apt-get install vim htop screen rsync  zip iftop git joe iotop tmux  fail2ban rkhunter mysql-server postfix

Les deux paquets vraiment intéressants sont mysql-server et postfix

  • mysql-server a la base le owncloud s installe avec sqllite, mais pour l’utilisation de certaines applications il est nécessaire d’avoir un serveur MySql
  • postfix afin de permettre l’envoi de mail.

Pensez à créer votre base de données et votre utilisateur

echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/ /' >> /etc/apt/sources.list.d/owncloud.list 
wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_7.0/Release.key
apt-key add - < Release.key
apt-get update
apt-get install owncloud

L’installation terminée, nous allons maintenant configurer apache. En effet le paquet ne pas va vous faire cette partie de la configuration.
On va donc configurer un virtualhost specialement pour owncloud et activer le ssl. Nous forcerons la connexion en https pour une plus grande sécurité.

cd /etc/apache2/sites-available/
vim owncloud.conf

Copier ce qui suit en modifiant le servername du virtualhost

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
    ServerName votrenomdedomaine.com
        DocumentRoot /var/www/owncloud
        <Directory /var/www/owncloud>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/owncloud_ssl_access.log combined
    ErrorLog ${APACHE_LOG_DIR}/owncloud_ssl_error.log

        SSLEngine on

        SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>
  BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
        # MSIE 7 and newer should be able to use keepalive
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>
</IfModule>

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName votrenomdedomaine.com
        DocumentRoot /var/www/owncloud

        <Directory /var/www/owncloud>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
    ErrorLog ${APACHE_LOG_DIR}/error.log 
</VirtualHost>
a2enmod ssl
a2enmod headers
a2dissite default
a2ensite owncloud.conf
/etc/init.d/apache2 restart

Connectez vous sur https://monnomdedomaine.fr

Vous arrivez à cette page :

ecran installation owncloud 6

Dans cet écran vous définissez :

  1. Votre login de connexion administrateur
  2. Votre mot de passe
  3. le chemin absolu de stockage des fichiers
  4. le type de base de données, on sélectionne bien sur Mysql
  5. le login de connexion a la base
  6. le mot de passe associé
  7. le nom de la base
  8. et le serveur le plus souvent localhost

Vous cliquez sur Terminer l’installation , voila c’est fini vous arrivez sur cette page :

page acceuil owncloud

Dans les prochains articles nous verrons :

  • Comment installer les clients owncloud
  • Les applications Owncloud
  • La configuration de Owncloud

Read More...

Installer une clé ssh sur ses serveurs

5 février 2014 | Posted in bash, planet-libre, Système d exploitation | By

Lorsque l’on possède un seul serveur, on peut facilement retenir le mot de passe root, ou pas si on s’appelle Dori la pote de Némo… Mais lorsque comme moi vous devez jongler entre le travail et la maison avec environ 200 machines, là retenir 200 mots de passe différents ça devient plus compliqué.
Alors pour se simplifier la tâche, nous allons mettre en place une clé ssh, reconfigurer le serveur openssh et nous créer des alias sur notre machine histoire de nous faciliter la connexion au machine.

Création de la clé ssh

La clé ssh marche avec la combinaison de deux fichiers. Une partie publique que l’on déploie sur les serveurs et la partie privée que l’on conserve précieusement sur votre $HOME

Nous allons donc générer ces deux fichiers.
Pour cela il faut commencer par installer notre client SSH :

apt-get update && apt-get install openssh-client

Ps : Notez l’utilisation de l’opérateur && à la place de &
le && ne lance la suite que lorsque la première partie est entièrement finie.

Nous générons ensuite la clé

ssh-keygen -t rsa -b 2048

ssh-keygen prend ici deux paramètres :
-t : Permet de spécifier le type de clé. je vous invite à lire le man pour voir les 4 possibilités suivant le protocole (à noter que le dsa est limité à un encryptage de 1024bits, c’est pour cela que je préfère le rsa).
-b : 2048 représente le niveau d’encryptage de la clé, ici j ai mis 2048 bits.

Il vous faut répondre maintenant à une série de questions, dont celle ci, qui permet surtout de nommer votre clé !!
Enter file in which to save the key (/home/ivanb/.ssh/id_rsa) :
Entrez le chemin complet en modifiant le id_rsa par cle_perso_serv, enfin ce que vous voulez.

Enter passphrase (empty for no passphrase):
Si vous laissez vide pas besoin de mot de passe, par contre si vous saisissez un mot de passe, il faudra le saisir pour que la clé fonctionne. Bon certain rabat-joie vont me dire « je ne vois pas l’intérêt de faire une clé pour mettre un mot de passe dessus! ».
On parle d’une clé root ici, on est jamais trop parano. De plus, la saisie du mot de passe en passant par votre bureau ne se fera qu’une fois puisque l’agent ssh va stocker. C’est un peu comme si vous déverrouillez votre coffre fort. Pour toutes les autres connexions sur les serveurs utilisant cette clé, il n’y aura plus besoin de la ressaisir.

Maintenant vous avez deux fichiers : cle_perso_serv et cle_perso_serv.pub

Installation de la clé

Il ne reste plus qu’à installer votre clé publique sur votre serveur.

En premier lieu il faut que sur le serveur vous ayez déjà défini un compte avec le login et le mot de passe.

ssh-copy-id -i ~/.ssh/cle_perso_serv.pub user@monserveur.com

user : le nom d’utilisateur pour qui la clé sera disponible
monserveur.com : soit l’ip soit le nom de domaine rattaché au serveur.

Saisissez le mot de passe. Le tour est joué.

Testez votre connexion :

ssh user@monserveur.com

Pour aller plus loin

Sécurisation

L’intérêt de la clé ssh est bien sur de nous faciliter la vie mais aussi de sécuriser la connexion à des comptes comme root.
Voici quelques petits réglages supplémentaires :

éditez le fichier /etc/ssh/sshd_config

Modifiez la ligne

PermitRootLogin Yes

en

PermitRootLogin without-password

Modifiez le port d’ecoute ssh

Port 22

en

Port 222

On restart le serveur ssh

/etc/init.d/ssh restart

Facilité d’utilisation

Si vous avez beaucoup de serveurs a gérer il est intéressant de se créer des alias.

Au lieu de taper :

ssh user@monserveur.com

vous aurez à faire

sshserveur

Pour cela éditez votre fichier .bashrc

vim ~/.bashrc

rajoutez la ligne :

alias sshserveur='ssh user@monserveur.com'

si vous avez modifié le port cela sera

alias sshserveur='ssh -p 222 user@monserveur.com'

Debug

Il m’est arrivé récemment une drôle d erreur en essayant de me connecter en ssh à un serveur n’ayant pas de clé.

Received disconnect from XXX.XXX.XXX.XXX: 2: Too many authentication failures for user

Cela vient en fait de notre ssh-agent qui tente de lancer notre clé pour s’authentifier. Au bout d’un moment le serveur en face de nous nous bloque sans nous laisser la possibilité de taper notre mot de passe.

Pour cela il faut faire une connexion ssh de ce type :

ssh -o PubkeyAuthentication=no user@monserveur.com

De plus si comme moi vous avez beaucoup de clés, vous pouvez modifier vos alias en spécifiant la clé à utiliser pour le serveur. Cela donnera

alias sshserveur='ssh -p 222 -i ~/.ssh/cle_perso_serv user@monserveur.com'

Read More...

Migration boite email de serveur à serveur

27 décembre 2013 | Posted in Mail, planet-libre | By

Lorsque l’on doit procéder au changement de serveur, il se pose toujours la question de la migration des données. Et cela devient encore plus problématique pour un serveur mail. En effet la récuperation des mails ne marche pas avec une simple copie. Pour récupérer les mails il y a une solution que j ai découvert récemment lors de migration d un serveur utilisant qmail vers un serveur sous postfix. Cette solution est gratuite c est imapcopy.

ImapCopy

Déja premier point plus qu intéressant, il n est pas obligatoire d installer imapcopy sur un des deux serveurs. Vous pouvez le mettre sur votre poste. Je l ai donc installer sur ma debian, puisqu’il est disponible sur wheezy en version 1.04-1 qui est somme toutes la dernière. Le projet n a plus évolué depuis 2010 si je dis pas de bêtises.

Installation

J installe en même temps screen, vous verrez pourquoi plus loin.

apt-get install imapcopy screen

Utilisation

Son utilisation est très simple.
Créez un répertoire ou bon vous semble.

mkdir -p /root/transfertimap

Dans ce dossier nous allons creer un fichier de configuration nommé imapcopy.cfg

et le remplir avec ceci

SourceServer XXX.XXX.XXX.XXX
SourcePort 143
DestServer YYY.YYY.YYY.YYY
DestPort 143
# SourceUser SourcePassword DestinationUser DestinationPassword
Copy "user@domaine.com" "motdepasse" ""user@domaine.com" "motdepasse"
Copy "user2@domaine.com" "motdepasse" ""user2@domaine.com" "motdepasse"

Évidemment pour que cela marche il faut que les comptes mails soient déjà paramétrés sur le nouveau serveur et que vous possédiez l ensemble des mot de passe. Enfin soyons réaliste si l ancien serveur n est plus opérationnel vous pouvez réinitialiser les mots de passes à votre guise.

et pour le lancer, très simplement vous pouvez le lancez comme ca :

cd /root/transfertimap && imapcopy

Mais au vu du temps que cela prend je vous conseille de screener le tout :

cd /root/transfertimap
screen -dmS transfertencours -L imapcopy

pour voir ou ca en est :

screen -r transfertencours 

Nota Bene : Pour sortir du screen faite CTRL+A+D

Régler le probleme d une authentification uniquement SSL

Pour cela on aura besoin d’un autre petit soft qui est stunnel et se faire un bon tunnel ssh de derrière les fagots

apt-get install stunnel

On va maintenant créer nos tunnels. Alors certain ouvre un autre terminal je préfère encore screener le tout. On est jamais à l abri de la fermeture intenpestive d une console qui stopperait tout le processus.

screen -dmS ecran1 -L stunnel -c -f -d 3100 -r XXX.XXX.XXX.XXX -P ''
screen -dmS ecran2 -L stunnel -c -f -d 3200 -r YYY.YYY.YYY.YYY -P ''

On modifie maintenant notre fichier de config en :

SourceServer 127.0.0.1
SourcePort 3100
DestServer 127.0.0.1
DestPort 3200
# SourceUser SourcePassword DestinationUser DestinationPassword
Copy "user@domaine.com" "motdepasse" ""user@domaine.com" "motdepasse"
Copy "user2@domaine.com" "motdepasse" ""user2@domaine.com" "motdepasse"

Pour tester :

imapcopy -t

Conclusion

Imapcopy est vraiment un petit soft génial. Néanmoins cela prend du temps de transférer les fichiers. Si vous avez beaucoup de données le mieux est d avoir un serveur d administration sous debian ou vous allez faire n dossiers de transfert avec donc n configurations, vous pourrez alors grâce à screen lancer plusieurs copie en meme temps. Seul l accés disque et votre bande passante seront alors des freins. Vous récupérerez ainsi l’ensemble de vos emails ainsi que l arborescence de la boite mail. Il ne vous restera plus qu a réactivé les dossiers via rondcube par exemple. Je cherche maintenant une façon aussi easy de pouvoir transférer les carnets d adresses de chaque user et les règles de filtrages. Mais la c est une autre histoire…

 

 

 

Read More...

Géolocalisation de vos visiteurs grâce à leur ip et a php

15 novembre 2011 | Posted in php, planet-libre, Programmation | By

Introduction

Lorsque l on possède un site, il est bien sur ouvert au monde entier, il peut être interessant de savoir de quels pays viennent les internautes pour par exemple :

  • leur fournir un contenu différent
  • afficher le site dans la bonne langue…

Il existe de multiples solutions, gratuites ou payantes.

On peut acheter une base de donnée ou passer par des webservices.

Les webservices

Le probleme majeur dans ce type de solution reste le temps de latence entre la demande et le resultat ce qui peut donc ralentir grandement votre site. De plus vous êtes tributaire d’un prestataire qui peut très bien avoir une coupure de service ou meme carrément tout arréter du jour au lendemain.

Les bases de donnée.

Solution bien souvent payante mais qui a l avantage d être plus rapide. elle peut néanmoins consommer pas mal de ressources suivant sur votre site.

La solution !!!

A force de recherche j ai fini par trouver une vrai solution efficace qui merite d être connue!!
Il existe une bibliothèque native dans php qui fait ce travail : geoip !!!

Je vais donc vous montrer comment la mettre sous php5 sur une debian et l accoupler avec une banque de donnée gratuite de maxmind que nous mettrons a jour grâce à un cron.

Installation

Allez c est parti pour un tour, on va commencer par récupérer la base de donnée d ip par pays disponible via maxmind

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
mkdir  /usr/share/GeoIP
mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

Maintenant on installe la librerie qu il nous faut

apt-get update
apt-get install php5-geoip

Il nous reste plus qu a faire une petite configuration dans le fichier .ini de geoip

echo "geoip.custom_directory = /usr/share/GeoIP" >> /etc/php5/conf.d/geoip.ini

On reload apache

/etc/init.d/apache2 restart

On verifie avec un phpinfo qui devrait vous donnez cela :
phpinfo avec geoip

Utilisation

L utilisation de la bibliotheque est très très simple je vous renvoie à la doc sur le site php pour plus d info :

http://www.php.net/manual/fr/book.geoip.php

Voici un exemple très simple pour tester :

echo "<pre>";
print_r(geoip_record_by_name($_SERVER['REMOTE_ADDR']));
echo "</pre>";

Qui donne le résultat suivant :
Array
(
[continent_code] => EU
[country_code] => FR
[country_code3] => FRA
[country_name] => France
[region] =>
[city] =>
[postal_code] =>
[latitude] => 46
[longitude] => 2
[dma_code] => 0
[area_code] => 0
)

Et le tour est joué. Cette base est gratuite et ne possède pas beaucoup de donnée mais vous pouvez très bien avoir plus d information avec une base payante.

Mise à jour

Maintenant que tout cela marche bien il est temps de mettre tout cela à jour de manière automatique grâce a un cron

Perso moi je veux faire la mise a jour une fois par semaine

touch /etc/cron.weekly/geoip_update.sh
chmod a+x  /etc/cron.weekly/geoip_update.sh

Editez le fichier et coller les lignes suivantes

cd ~
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

Voila le tour est joué

 

Read More...

Autoriser le copier-coller dans un applet java sous debian et ubuntu

2 novembre 2011 | Posted in java, planet-libre, Système d exploitation | By

Lors du passage sous ubuntu 11.10 j ai eu vraiment un clash avec la distribution. J ai donc décidé de revenir à mes premiers amours, une bonne vieille debian.

Travaillant avec des applet pour l administration sous webmin (bien pratique quoi que l on en dise) j ai eu de nouveau le problème du copier coller dans un applet.

Voici donc la méthode pour pouvoir activer facilement cette fonction bien pratique.

Préambule.

Tout d abord il faut savoir que l on a plusieurs version de la MV de java :

  • openjdk
  • sun

Moi perso j utilise ma version de sun pour une bonne compatibilité avec aptana.

Cherchons le fichier java.policy

locate java.policy

La reponse devrait donné ceci sous une debian

/etc/java-6-openjdk/security/java.policy
/etc/java-6-sun/security/java.policy

editez le fichier pour java-6-sun si vous utilisez sun et l autre si vous etes sous openjdk

Rajoutez ensuite cette ligne entre les balises

Grant {

...

}
permission java.awt.AWTPermission "accessClipboard";

Voila le tour est joué

Read More...