Installer Communecter

Ubuntu 16.04


Pour utiliser Communecter vous devez avoir

  • Apache 2 & PHP 5.6 (Attention, ne fonctionne pas sur PHP 7)

    • sudo apt-get install apache2 php5.6

    • Pour passer de la version 7 à 5.6 vous pouvez suivre la solution suivante :

    • Certains modules doivent être installé

      • rewrite sudo a2enmod rewrite
      • curl sudo apt-get install php5.6-curl
      • mcrypt sudo apt-get install php5.6-mcrypt
      • gd sudo apt-get install php5.6-gd
      • mongo sudo apt-get install php5.6-mongo
      • dom sudo apt-get install php5.6-dom
    • Pour vérifier votre version de PHP php -v

  • MongoDB 3.4 (Ne fonctionne pas avec la 3.6) :

sudo apt-key adv --keyserver hkp:// --recv 0C49F3730359A14518585931BC711F9BA15703C6
echo "deb [ arch=amd64,arm64 ] xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org


Clone from GitHub :

mkdir ~/dev && mkdir ~/dev/communecter 
mkdir ~/dev/communecter/modules 
cd /var/www/html/
sudo ln -s ~/communecter communecter
cd ~/dev/communecter
git clone
cd modules/
git clone
git clone
ln -s co2 network
git clone
git clone
git clone
git clone
git clone
git clone
git clone
git clone
git clone
git clone
git clone
cd ../

Installer les dépendances avec Composer :

sudo apt install composer
cd pixelhumain/ph/
composer update
composer install

Rename the dbconfig file :

cd protected/
cp config/dbconfig.exemple.php config/dbconfig.php

Si le fichier dbconfig.php n'existe pas, créer le : nano config/dbconfig.php

$dbconfig = array(
     'class' => 'mongoYii.EMongoClient',
    'server' => 'mongodb://',
     'db' => 'pixelhumain', 

Création du dossier runtime et assets

mkdir runtime
sudo chmod -R 775 runtime/
cd ../
mkdir assets
sudo chmod -R 775 assets/
cd ../../
sudo chown -R [votreUser]:www-data pixelhumain
sudo chown -R [votreUser]:www-data modules


And configure Apache vhost : edit /etc/apache2/sites-available/communecter.conf :

<VirtualHost *:80>
	# The ServerName directive sets the request scheme, hostname and port that
	# the server uses to identify itself. This is used when creating
	# redirection URLs. In the context of virtual hosts, the ServerName
	# specifies what hostname must appear in the request's Host: header to
	# match this virtual host. For the default virtual host (this file) this
	# value is not decisive as it is used as a last resort host regardless.
	# However, you must set it for any further virtual host explicitly.

	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html

	  Alias "/ph" "/var/www/html/communecter/pixelhumain/ph"
	  <Directory "/var/www/html/communecter/pixelhumain/ph">
		Options FollowSymLinks Indexes
		AllowOverride none
		Order deny,allow
		#Allow from
		#deny from all
		<IfModule mod_rewrite.c>
		Options +FollowSymLinks
		IndexIgnore */*
		RewriteEngine on
		RewriteCond %{REQUEST_FILENAME} !-f
		RewriteCond %{REQUEST_FILENAME} !-d
		RewriteCond $1 !^(index\.php|assets|robots\.txt)
		RewriteRule ^(.*)$ /ph/index.php/$1 [L]

	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
	# error, crit, alert, emerg.
	# It is also possible to configure the loglevel for particular
	# modules, e.g.
	#LogLevel info ssl:warn

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	# For most configuration files from conf-available/, which are
	# enabled or disabled at a global level, it is possible to
	# include a line for only one particular virtual host. For example the
	# following line enables the CGI configuration for this host only
	# after it has been globally disabled with "a2disconf".
	#Include conf-available/serve-cgi-bin.conf

Activate the new vhost :

sudo a2ensite communecter 
sudo a2enmod rewrite 
sudo service apache2 reload

Configurer MongoDB

#Making the Data folder for MongoDB
mkdir data/
mkdir data/db

#Starting mongod (communecter Database Engine)
mongod --dbpath "/var/www/html/communecter/data/db"

#open a new terminal windows
#Making user adding script of pixelhumain user
echo 'db.createUser({     user: "pixelhumain",     pwd: "pixelhumain",     roles: [{role:"readWrite", db:"pixelhumain"}]})' > adduserpixelhumaindb.js                                                   
mongo pixelhumain adduserpixelhumaindb.js

#Deleting script after use
rm adduserpixelhumaindb.js

Import les données :

cd modules/co2/data
mongoimport --db pixelhumain --collection cities --file cities.json

mongoimport --db pixelhumain --collection translate --file translate.json

mongoimport --db pixelhumain --collection zones --file zones.json

mongoimport --db pixelhumain --collection lists lists.json --jsonArray ;

  use pixelhumain
  db.applications.insert({     "_id" : ObjectId("59f1920bc30f30536124355d"),     "name" : "DEV Config",     "key" : "devParams",     "mangoPay" : {         "ClientId" : "communecter",         "ClientPassword" : "xxxx",         "TemporaryFolder" : "../../tmp"     } } )
  db.applications.insert({     "_id" : ObjectId("59f1920bc30f30536124355e"),     "name" : "PROD Config",     "key" : "prodParams",     "mangoPay" : {         "ClientId" : "communecter",         "ClientPassword" : "xxxx",         "TemporaryFolder" : "../../tmp"     } } )

cd ../

Ajouter MongoDB au démarrage et faire le script d’utilisation : sudo nano /etc/init.d/communecterdb

Ajouter ceci :

# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Provides:          unattended-upgrade-shutdown-check
# Default-Start:     2 3 4 5
# Default-Stop:      0 6
# Short-Description: Check if unattended upgrades are being applied
# Description:       Check if unattended upgrades are being applied
#                    and wait for them to finish

mongod --dbpath /var/www/html/communecter/data/db

Sauvegardez :

sudo chmod +x /etc/init.d/communecterdb
update-rc.d communecterdb defaults
update-rc.d communecterdb enable

Alternative : créer le script, le rendre exécutable et l’ajouter dans /etc/rc.local

Vérifier que tous les composants sont installés

Accéder a l’url suivant :
Et réglez tout les points rouges.

C’est bon vous pouvez utiliser COMMUNECTER

Accédez à cette adresse :


Interface Mongo

Si vous souhaitez avoir une interface pour géré MongoDB vous pouvez télécharger Robo3T :

Email service to cron


crontab -e : */2 * * * * curl


Communecter is now available :
To try the email service, go to

To use in production mode, edit index.php


Create /var/www/html/communecter/ containing :

red=`tput setaf 1`
green=`tput setaf 2`
blue=`tput setaf 0`
bgWhite=`tput setab 7`
reset=`tput sgr0`

cp pixelhumain/ph/protected/config/dbconfig.php .
cp pixelhumain/ph/protected/config/paramsconfig.php .

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ CO2  --------------------"
echo "---------------------------------------------${reset}"
echo ""
cd modules/co2
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ CITIZEN TOOLKIT-----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../citizenToolKit
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ CLASSIFIEDS -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../classifieds
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ RESSOURCES -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../ressources
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ PLACES -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../places
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ API -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../api
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ CHAT -----------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../chat
echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git pull

echo ""
echo "${green}${bgWhite}---------------------------------------------"
echo "------------ PIXELHUMAIN --------------------"
echo "---------------------------------------------${reset}"
echo ""
cd ../../pixelhumain
rm -f ph/protected/runtime/application.log
rm -Rf ph/assets/*

echo "${blue}${bgWhite}GIT STATS${reset}"
git status -sb
echo "${blue}${bgWhite}GIT LOGS${reset}"
git --no-pager log --pretty=format:"%h - %an, %ar : %s" --max-count=5
echo ""
echo "${blue}${bgWhite}GIT PULL${reset}"
git reset --hard HEAD
git pull

cp ../dbconfig.php ph/protected/config
cp ../paramsconfig.php ph/protected/config

#echo "${red}---------------------------------------------"
#echo "------------ GLOBAL STATS --------------------"
#echo "---------------------------------------------${reset}"
#git shortlog -s -n

Make it executable and launch it.


Retour au TODO de Fluidlog

Proposition de Marc_Toulouse sur le chat :
L’idée en effet est de regrouper les différents façons d’installer Communecter ici : (c’est un clone du wiki de Github)
Voir plus précisément : (et pas à priori car ça ne concerne pas docker)

Tibor me parle aussi du nouveau PAD : (sur CryptoPad) : ça c’est pour faire la doc. C’est vraiment ici qu’elle doit être faite : : en cliquant sur le crayon, on accès au wiki de Github en mode édition (faut avoir un compte github)

Installation de Communecter via docker

choose community edition CE
example install docker ubuntu

Erreur avec AptGet… OK
docker-ce n’était pas dispo de base, il a fallu ajouter des serveurs
En fait, j’ai du suivre le post:

Post-installation steps for Linux

Installer docker-compose

Installer Communecter

git clone ~/pixelhumain-docker
cd ~/pixelhumain-docker
#pour linux
docker-compose -f docker-compose.yml -f docker-compose.install.yml run ph cotools --install
#ou pour windows/mac utiliser
docker-compose -f docker-compose-no-build.yml -f docker-compose.install-no-build.yml run ph cotools --install

Mise à jour des droits

Modifier les droits pour pouvoir modifier les fichiers :

Pour taper ces commandes, se mettre dans le rep :
cd ~/pixelhumain-docker

#modifier le group/user pour pouvoir ouvrir/modifier les fichiers
sudo chown -R ${USER:=$(/usr/bin/id -run)}:$USER code/
sudo chown -R ${USER:=$(/usr/bin/id -run)}:$USER code/pixelhumain/
sudo chown -R ${USER:=$(/usr/bin/id -run)}:$USER code/modules/
sudo chown -R ${USER:=$(/usr/bin/id -run)}:$USER code/log/

Voir aussi “Getting start” :

Problème d’accès

Suite à cela, je n’avais pas accès à CO.

Nous avons vérifié si un container tournait (voir paragraphe plus bas) -> non

Nous avons supprimé le répertoire code pour tout recommencer.

docker-compose -f docker-compose.yml -f docker-compose.install.yml run ph install

Explication :
la il va rebuilder le container front et utiliser le container install pour faire l’install sur le front
c’est pour ça que l’on a 2 fichier :

  • docker-compose.yml
  • docker-compose.install.yml

docker-compose.install.yml ne sert que pour l’install et certaine commande

Suite à ces commandes, il clone tout ce qu’il faut en local, ça prend un certain temps en fonction de votre réseau…

Aller sur http://localhost:5080

La première fois, j’ai eu des messages d’erreur d’accès…

Thomas m’a demandé si j’avais le répertoire :
mais je ne l’avais pas…

Nous avons de nouveau supprimé le répertoire code, et modifié le script


pour y ajouter curl et php

Voir la présence et lancer un container

Pour savoir si docker tourne, faire "docker ps"
S’il n’y a rien (à part le titre des colonnes du tableau), c’est signe qu’aucun container ne tourne.

Exemple : ici, il n’y a pas de container qui tourne :

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Là, il y en a :

CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                                                                           NAMES
92ed85af6a28        pixelhumaindocker_front   "/usr/bin/supervisord"   4 weeks ago         Up About a minute   9000/tcp,>80/tcp,>443/tcp,>9001/tcp   pixelhumaindocker_front_1
8f16ade3a72b        mongo                     "docker-entrypoint..."   4 weeks ago         Up About a minute   27017/tcp                                                                       pixelhumaindocker_mongo_1

Et pour lancer un container :

docker-compose -f docker-compose.yml up

Inscription en local

Une fois sur l’interface d’accueil de CO, il faut remplir le formulaire d’inscription, sauf que le mail d’activation n’est pas envoyé.

Pour passer cette étape, on “triche” avec la commande :

docker-compose -f docker-compose.yml -f docker-compose.install.yml run ph cotools

(en modifiant bien sur : par l’email qui a servi à l’inscription)
On rafraîchit la page, on se loge, et ça fonctionne, on arrive dans CO !

Gérer le démarrage auto

sudo systemctl enable docker
Synchronizing state of docker.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable docker

Malgré cela, CO ne démarre pas au lancement de ma machine.

Accès à Communecter

Je n’ai pas encore réussi (pas essayé non plus…) à le lancer au démarrage, donc à chaque fois que je souhaite lancer CO :

  • Je vais dans mon répertoire ~/projets/pixelhumain-docker/
  • Je lance docker-compose -f docker-compose.yml up
  • Je vais sur http://localhost:5080, et ça tourne !

Tout est noté à la fin du script ci-dessus… (je dis ça, car j’ai cherché un peu car je n’avais pas lu…)

Ajout de Fluidgraph dans CO

Administration de la base NoSQL (mongoDB)

Pour avoir accès à mongo en dehors du container il faut ouvrir le port
Voir fichier :

J’ai du ajouter la ligne concernant l’ouverture de port comme l’exemple qui suit :

    image: mongo
      - ./code/data/db:/data/db
      - "5017:27017"

Cela m’a permis, via l’outil Robomongo d’ajouter une collection :

    "_id" : ObjectId("59f1920bc30f30536124355d"),
    "name" : "DEV Config",
    "key" : "devParams",
    "mangoPay" : {
        "ClientId" : "communecter",
        "ClientPassword" : "XXXXXXXXXXX",
        "TemporaryFolder" : "../../tmp"

Je ne sais pas encore à quoi ça correspond, mais on m’a dit de le faire, sinon, j’avais l’erreur :

Missing Configs db.applications.key == prodParamsexists 

Ce qui m’a permis de faire fonctionner mon instance locale.