Bug fix (was sending reminders only for 1 vote and not all)
[cavote.git] / README.md
1 Système de vote pour associations
2 =================================
3
4 Développé pour et par des membres de la Fédération FDN (http://ffdn.org)
5
6 Installation (développement)
7 ----------------------------
8
9 Dépendances :
10
11 - python (testé avec python 2.7
12 - python-openid
13 - sqlite3
14 - Flask
15 - Flask-OpenID
16
17 Récupérer la dernière version de développement :
18 `$ git clone git@git.ndn.cx:cavote.git`
19
20 Installation de la base de données :
21 `$ sqlite3 /path/to/cavote.db
22 > .read schema.sql`
23
24 Modifiez les paramètres de settings.py pour qu'ils correspondent à votre installation
25
26 Lancez le serveur en mode développement :
27 `$ python main.py`
28
29 Dans un navigateur, vous pourrez à cavote à l'adresse
30 <http://localhost:5000/>.
31
32 L'utilisateur par défaut peut être activé à l'adresse
33 <http://localhost:5000/login/1/victory>. Modifiez en les
34 identifiants de connection lors du premier accès.
35
36
37 Installation (production)
38 -------------------------
39
40 Les étapes pour l'installation en mode production sont les
41 mêmes qu'en mode développement, jusqu'à l'étape de lancement
42 du serveur.
43
44 NDN a choisi d'utiliser gunicorn pour mettre en production
45 son instance de cavote.
46
47 Pour celà, installez gunicorn (dépendant de votre distribution).
48
49 Dans le répertoire de cavote, tappez :
50 `gunicorn -w 4 -b 192.168.122.104:8000 main:app -D`
51
52 - -w 4 signifie que gunicorn lancera 4 "workers", ce qui devrait amplement suffir
53 - remplacez l'adresse IP et le port par votre configuration. L'adresse IP doit
54 correspondre à qu'appellera votre serveur web en frontend (nous utiliserons nginx dans l'exemple).
55 Si ce frontend est situé sur la même machine que cavote, l'adresse IP sera 127.0.0.1.
56 - De même, changez de port si vous souhaitez en utiliser un autre
57 - -D signifie que gunicorn sera lancé en daemon.
58 - Enlever vous permettrait de tester et pouvoir fermer le serveur en tappant Ctrl+C
59 - En mode daemon, un `pkill gunicorn` killera vos workers gunicorn
60
61 Pour activer les notifications par mail, mettez en place une tache cron appelant le script `reminder.py`.
62
63 Configurez nginx (`/etc/nginx/sites-enabled` ou `/etc/nginx/nginx.conf` ou
64 autre selon votre système)
65
66 server {
67 listen <votre-ip>:80;
68 server_name <votre-url-cavote>;
69 rewrite ^(.*) https://<votre-url-cavote>$1 permanent;
70 }
71
72 #
73 # FIXME: specify correct value(s) for `server_name` directive and
74 # `ssl_certificate` + `ssl_certificate_key` directives below
75 #
76 server {
77 listen <votre-ip>:443;
78 server_name <votre-url-cavote>;
79 ## make sure you change location if you did clone into /usr/local/app
80
81 ssl on;
82 ssl_certificate /path/to/<votre_certificat_ssl>.crt;
83 ssl_certificate_key /path/to/<votre_certificat_ssl>.key;
84 # enable better ssl security if you like to mitigate BEAST and other exploits
85 #ssl_session_cache shared:SSL:10m;
86 #ssl_session_timeout 5m;
87 ssl_protocols SSLv3 TLSv1;
88 ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM;
89 ssl_prefer_server_ciphers on;
90 #add_header Strict-Transport-Security max-age=500;
91 #ssl_ecdh_curve secp521r1;
92
93
94 #
95 # FIXME: modify the `rewrite` directive below to point to proper S3 bucket
96 # and path or comment out if you will store images on local file system
97 #
98 location / {
99 proxy_pass http://192.168.122.104:8000;
100 proxy_set_header X-Real-IP $remote_addr;
101 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
102 proxy_set_header Host $http_host;
103 proxy_set_header X-Forwarded-Proto https;
104 proxy_redirect off;
105 client_max_body_size 4M;
106 client_body_buffer_size 128K;
107 }
108
109 error_page 500 502 503 504 /50x.html;
110 location = /50x.html {
111 root html;
112 }
113 }
114
115
116 Modifiez les valeurs correspondant a la configuration de votre installation.
117 Dans l'exemple ci dessus, cavote sera disponible automatiquement et uniquement
118 en HTTPS.
119
120 Licence
121 -------
122
123 La licence appliquée est la GNU/AGPLv3
124
125 Contributeurs
126 -------------
127
128 - Julien Rabier
129 - Guillaume Subiron
130 - Arnaud Delcasse
131 - Pierre 'Rogdham' Pavlidès
132