Utilisateurs/Brimir-(old-Support).md
... ...
@@ -0,0 +1,244 @@
1
+Support par Brimir
2
+==================
3
+
4
+`Birmir n'étant plus mis à jour, le support est maintenant gérer avec Zammad.`
5
+
6
+## Présentation
7
+> Brimir is a simple helpdesk system that can be used to handle support requests via incoming email.
8
+
9
+* https://getbrimir.com/
10
+* https://github.com/ivaldi/brimir
11
+
12
+Brimir est actuellement installé sur **le serveur Tails**.
13
+
14
+## Utilisation
15
+### Start/Stop
16
+```
17
+sudo service uwsgi [start|stop|status] brimir
18
+```
19
+
20
+
21
+### Labels
22
+
23
+#### Ajouter une adresse email d'envoi
24
+Possible par [l'interface](https://support.resel.fr/email_addresses), mais il y a une vérification. On peut aussi trifouiller la base SQL (tant que c'est un ajout et fait proprement) en ajoutant une ligne avec default à false, les dates à expression `NOW()` et token sur `null`.
25
+
26
+## Installation
27
+
28
+### Prérequis : base SQL
29
+
30
+On choisi PostgreSQL, parce que c'est le bien :)
31
+
32
+1. On commence par créer l'utilisateur :
33
+```
34
+11:07 alevavas@maia ~ % sudo -u postgres createuser -E -I -P brimir
35
+[sudo] password for alevavas:
36
+Saisir le mot de passe pour le nouveau rôle :
37
+Le saisir de nouveau :
38
+Le nouveau rôle est-il super-utilisateur ? (o/n) n
39
+Le nouveau rôle est-il autorisé à créer des bases de données ? (o/n) n
40
+Le nouveau rôle est-il autorisé à créer de nouveaux rôles ? (o/n) n
41
+```
42
+
43
+2. on créé la base `sudo -u postgres createdb -E utf8 -O brimir brimir`
44
+on ajoute l'autorisation de se connecter : `sudo nano /etc/postgresql/9.1/main/pg_hba.conf`
45
+ - on ajoute la ligne suivante : `host brimir brimir 172.22.2.56/32 md5`
46
+4. enfin on recharge : `sudo service postgresql reload`
47
+```
48
+[ ok ] Reloading PostgreSQL 9.1 database server: main.
49
+```
50
+
51
+## Brimir
52
+Les étapes sont assez simple (une fois qu'on a trouvé ce qui cloche, comme par exemple le fait que le gem execjs vient sans moteur JS et qu'il faut installer NodeJS) :
53
+
54
+1. on créé un emplacement et on récupère le code :
55
+```
56
+root@tails /srv # mkdir brimir
57
+root@tails /srv # cd brimir
58
+root@tails /srv/brimir # ll
59
+total 0
60
+root@tails /srv/brimir # git clone https://github.com/ivaldi/brimir.git .
61
+root@tails /srv/brimir # git checkout tags/0.6.1
62
+HEAD is now at b084fd6... Recognize CC an BCC addresses as well
63
+
64
+root@tails /srv/brimir # useradd -M -c "Brimir" -r brimir -l -d /srv/brimir/
65
+root@tails /srv/brimir # chown -R brimir:www-data .
66
+```
67
+
68
+2. on installe les dépendances :
69
+```
70
+root@tails /srv/brimir # apt-get install ruby ruby-dev libpq-dev
71
+root@tails /srv/brimir # gem install bundler
72
+root@tails /srv/brimir # curl --silent --location https://deb.nodesource.com/setup_0.12 | bash -
73
+root@tails /srv/brimir # apt-get install nodejs
74
+```
75
+
76
+3. on met la configuration comme il faut
77
+ - `nano config/database.yml` avec les bonnes infos
78
+ - `nano config/environments/production.rb` on rajoute :
79
+```
80
+# Conf ResEl
81
+config.action_mailer.default_options = { from: 'support@resel.fr' }
82
+config.action_mailer.default_url_options = { host: 'support.resel.fr' }
83
+```
84
+
85
+4. on récupère les dépendances (Gems) avec `sudo -u brimir bundle install --without mysql sqlite development test --path vendor/bundle --deployment` (attention à l'utilisateur, sudo, pour toute commande lié à l'application comme bundle à partir de maintenant)
86
+
87
+5. on va générer un secret qui servira pour les cookies, on peut le faire avec `sed -i "s/<%= ENV\[\"SECRET_KEY_BASE\"\]` %>/`bin/rake secret`/g" config/secrets.ym`l ou
88
+`sed -i "s/<%= ENV\[\"SECRET_KEY_BASE\"\] %>/`dd if=/dev/urandom bs=1 count=1024 | sha512sum`/g" config/secrets.yml`
89
+
90
+6. on peut alors commencer l'installation de l'application :
91
+ `sudo -u brimir bundle exec rake db:schema:load RAILS_ENV=production`
92
+ `sudo -u brimir bundle exec rake assets:precompile RAILS_ENV=production`
93
+
94
+7. enfin on peut ajouter un 1er utilisateur à la main : `sudo -u brimir bundle exec rails console production`
95
+
96
+### uWSGI
97
+Bon l'application est prête, il lui faut un container serveur d'application, uWSGI est probablement le candidat idéal en plus du fait qu'il gère plus d'un langage (Python, Ruby, Perl, ...).
98
+
99
+1. On installe : `sudo apt-get install uwsgi uwsgi-plugin-rack-ruby1.9.1`
100
+2. On va créer un fichier de configuration `nano /etc/uwsgi/apps-available/brimir.ini` (la conf est dérivée de celle de Redmine)
101
+```
102
+
103
+[uwsgi]
104
+master = true
105
+lazy-apps = true
106
+;idle = 3600
107
+processes = 1
108
+
109
+chdir = /srv/brimir
110
+plugin = rack
111
+rack = config.ru
112
+rbrequire = bundler/setup
113
+env = RAILS_ENV=production
114
+
115
+uid = brimir
116
+gid = brimir
117
+chmod-socket = 770
118
+chown-socket = www-data:www-data
119
+
120
+; lazy-apps
121
+;rbrequire = rubygems
122
+;env = BUNDLE_GEMFILE=/srv/brimir/Gemfile
123
+```
124
+
125
+3. On ajoute l'application aux actives : `cd /etc/uwsgi/apps-enabled/ && ln -s ../apps-available/brimir.ini .`
126
+
127
+4. On peut lancer l'application avec `service uwsgi start brimir` et uWSGI met à disposition le socket pour y accéder dans `/run/uwsgi/app/brimir/socket`.
128
+
129
+### Nginx
130
+
131
+Un serveur web qu'on ne présente plus, léger avec une syntaxe de configuration légère.
132
+
133
+1. On commence par l'installer : `sudo apt-get install nginx`
134
+2. On créé le fichier de conf qui va bien sudo nano /etc/nginx/sites-enabled/support.conf (de nouveau, basé sur l'exemple Redmine) :
135
+```
136
+server {
137
+ listen 172.22.42.20:443 ssl;
138
+
139
+ server_name support.resel.fr;
140
+
141
+ ssl_certificate /etc/nginx/ssl/resel.pem;
142
+ ssl_certificate_key /etc/nginx/ssl/resel.key;
143
+
144
+ access_log /var/log/nginx/access_support.resel.fr.log;
145
+ error_log /var/log/nginx/errors_support.resel.fr.log;
146
+
147
+ root "/srv/brimir/public";
148
+
149
+ # "API" de création des tickets par email .. désolé mais on filtre, que pour l'interne
150
+ # Seul le serveur mail / les serveurs internes peuvent envoyer, pour les autres, on envoi un vrai faux 404
151
+ # http://stackoverflow.com/questions/26369128/how-to-deny-with-404-on-nginx
152
+ location = /fake-internal-404.html {
153
+ internal; #return 404
154
+ }
155
+ location = /tickets.json {
156
+ error_page 403 404 /fake-internal-404.html;
157
+ # https://trac.nginx.org/nginx/ticket/633 : la ligne suivante ne fonctionne pas ..
158
+# limit_except GET {
159
+ #allow all;
160
+ allow ipv4-adm-brest/23;
161
+ allow ipv4-pub-brest/23;
162
+ allow ipv4-adm-rennes/23;
163
+ allow ipv4-pub-rennes/23;
164
+ allow ipv6-adm-brest/64;
165
+ allow ipv6-pub-brest/64;
166
+ allow ipv6-adm-rennes/64;
167
+ allow ipv6-pub-rennes/64;
168
+ deny all;
169
+# }
170
+ try_files $uri @brimir;
171
+ }
172
+
173
+ location / {
174
+ try_files $uri @brimir;
175
+ }
176
+
177
+ location @brimir {
178
+ include uwsgi_params;
179
+ uwsgi_modifier1 7;
180
+ uwsgi_pass unix:/run/uwsgi/brimir.sock;
181
+ }
182
+
183
+}
184
+```
185
+
186
+Bonus :
187
+```
188
+
189
+tails ~ % cat /etc/nginx/sites-enabled/http-redirect.conf
190
+server {
191
+ listen [::]:80 default_server;
192
+
193
+ # http://serverfault.com/questions/67316/in-nginx-how-can-i-rewrite-all-http-requests-to-https-while-maintaining-sub-dom
194
+ return 301 https://$server_name$request_uri;
195
+}
196
+```
197
+
198
+3. On ajoute le site aux sites actifs : `cd /etc/nginx/sites-enabled/ && ln -s ../sites-available/support.conf .`
199
+
200
+4. On peut lancer ou relancer nginx
201
+
202
+### Réception de mail
203
+
204
+
205
+
206
+L'envoi des mails à l'appli de support est très propre et fait simplement appel à cURL.
207
+Il faut mettre en place le script script/post-mail sur le serveur de mail (par exemple dans `/srv/scripts/brimir/`), puis modifier le fichier d'aliases (`/etc/aliases`) pour y ajouter :
208
+```
209
+brimir: "|/bin/sh /srv/scripts/brimir/post-mail https://support.resel.fr/tickets.json"
210
+support: brimir
211
+inscription: brimir
212
+```
213
+
214
+et enfin recharger la base d'aliases postalias /etc/aliases puis recharger postfix pour un effet imémdiat service postfix reload.
215
+
216
+
217
+### Débug
218
+
219
+On peut utiliser `curl` pour débuguer :
220
+
221
+```
222
+curl --data-urlencode message@- -v https://support.resel.fr/tickets.json <<EOF
223
+Date: Tue, 7 Feb 2017 01:45:22 +0100 (CET)
224
+From: stupid@resel.fr
225
+To: support@resel.fr
226
+Message-ID: <random_id@test>
227
+Subject: coucou :)
228
+
229
+Yo !
230
+
231
+EOF
232
+```
233
+
234
+Quelques liens :
235
+* https://github.com/ivaldi/brimir/
236
+* https://stackoverflow.com/questions/3681329/rails-3s-bundle-install-and-bundle-install-deployment-both-work-well-exce
237
+* https://github.com/rails/execjs
238
+* http://www.norbauer.com/rails-consulting/notes/git-revert-reset-a-single-file.html
239
+* https://stackoverflow.com/questions/9202324/execjs-could-not-find-a-javascript-runtime-but-execjs-and-therubyracer-are-in
240
+* https://stackoverflow.com/questions/6282307/execjs-and-could-not-find-a-javascript-runtime
241
+* https://github.com/nodejs/node-v0.x-archive/wiki/Installing-Node.js-via-package-manager#debian-and-ubuntu-based-linux-distributions
242
+* https://stackoverflow.com/questions/11513623/bundler-you-are-trying-to-install-in-deployment-mode-after-changing-your-gemfil
243
+* http://www.databasically.com/2010/10/22/what-time-is-it-or-handling-timezones-in-rails/
244
+* https://stackoverflow.com/questions/8395748/devise-with-ldap-auth-problems
... ...
\ No newline at end of file
Utilisateurs/Support.md
... ...
@@ -1,242 +0,0 @@
1
-Support par Brimir
2
-==================
3
-
4
-## Présentation
5
-> Brimir is a simple helpdesk system that can be used to handle support requests via incoming email.
6
-
7
-* https://getbrimir.com/
8
-* https://github.com/ivaldi/brimir
9
-
10
-Brimir est actuellement installé sur **le serveur Tails**.
11
-
12
-## Utilisation
13
-### Start/Stop
14
-```
15
-sudo service uwsgi [start|stop|status] brimir
16
-```
17
-
18
-
19
-### Labels
20
-
21
-#### Ajouter une adresse email d'envoi
22
-Possible par [l'interface](https://support.resel.fr/email_addresses), mais il y a une vérification. On peut aussi trifouiller la base SQL (tant que c'est un ajout et fait proprement) en ajoutant une ligne avec default à false, les dates à expression `NOW()` et token sur `null`.
23
-
24
-## Installation
25
-
26
-### Prérequis : base SQL
27
-
28
-On choisi PostgreSQL, parce que c'est le bien :)
29
-
30
-1. On commence par créer l'utilisateur :
31
-```
32
-11:07 alevavas@maia ~ % sudo -u postgres createuser -E -I -P brimir
33
-[sudo] password for alevavas:
34
-Saisir le mot de passe pour le nouveau rôle :
35
-Le saisir de nouveau :
36
-Le nouveau rôle est-il super-utilisateur ? (o/n) n
37
-Le nouveau rôle est-il autorisé à créer des bases de données ? (o/n) n
38
-Le nouveau rôle est-il autorisé à créer de nouveaux rôles ? (o/n) n
39
-```
40
-
41
-2. on créé la base `sudo -u postgres createdb -E utf8 -O brimir brimir`
42
-on ajoute l'autorisation de se connecter : `sudo nano /etc/postgresql/9.1/main/pg_hba.conf`
43
- - on ajoute la ligne suivante : `host brimir brimir 172.22.2.56/32 md5`
44
-4. enfin on recharge : `sudo service postgresql reload`
45
-```
46
-[ ok ] Reloading PostgreSQL 9.1 database server: main.
47
-```
48
-
49
-## Brimir
50
-Les étapes sont assez simple (une fois qu'on a trouvé ce qui cloche, comme par exemple le fait que le gem execjs vient sans moteur JS et qu'il faut installer NodeJS) :
51
-
52
-1. on créé un emplacement et on récupère le code :
53
-```
54
-root@tails /srv # mkdir brimir
55
-root@tails /srv # cd brimir
56
-root@tails /srv/brimir # ll
57
-total 0
58
-root@tails /srv/brimir # git clone https://github.com/ivaldi/brimir.git .
59
-root@tails /srv/brimir # git checkout tags/0.6.1
60
-HEAD is now at b084fd6... Recognize CC an BCC addresses as well
61
-
62
-root@tails /srv/brimir # useradd -M -c "Brimir" -r brimir -l -d /srv/brimir/
63
-root@tails /srv/brimir # chown -R brimir:www-data .
64
-```
65
-
66
-2. on installe les dépendances :
67
-```
68
-root@tails /srv/brimir # apt-get install ruby ruby-dev libpq-dev
69
-root@tails /srv/brimir # gem install bundler
70
-root@tails /srv/brimir # curl --silent --location https://deb.nodesource.com/setup_0.12 | bash -
71
-root@tails /srv/brimir # apt-get install nodejs
72
-```
73
-
74
-3. on met la configuration comme il faut
75
- - `nano config/database.yml` avec les bonnes infos
76
- - `nano config/environments/production.rb` on rajoute :
77
-```
78
-# Conf ResEl
79
-config.action_mailer.default_options = { from: 'support@resel.fr' }
80
-config.action_mailer.default_url_options = { host: 'support.resel.fr' }
81
-```
82
-
83
-4. on récupère les dépendances (Gems) avec `sudo -u brimir bundle install --without mysql sqlite development test --path vendor/bundle --deployment` (attention à l'utilisateur, sudo, pour toute commande lié à l'application comme bundle à partir de maintenant)
84
-
85
-5. on va générer un secret qui servira pour les cookies, on peut le faire avec `sed -i "s/<%= ENV\[\"SECRET_KEY_BASE\"\]` %>/`bin/rake secret`/g" config/secrets.ym`l ou
86
-`sed -i "s/<%= ENV\[\"SECRET_KEY_BASE\"\] %>/`dd if=/dev/urandom bs=1 count=1024 | sha512sum`/g" config/secrets.yml`
87
-
88
-6. on peut alors commencer l'installation de l'application :
89
- `sudo -u brimir bundle exec rake db:schema:load RAILS_ENV=production`
90
- `sudo -u brimir bundle exec rake assets:precompile RAILS_ENV=production`
91
-
92
-7. enfin on peut ajouter un 1er utilisateur à la main : `sudo -u brimir bundle exec rails console production`
93
-
94
-### uWSGI
95
-Bon l'application est prête, il lui faut un container serveur d'application, uWSGI est probablement le candidat idéal en plus du fait qu'il gère plus d'un langage (Python, Ruby, Perl, ...).
96
-
97
-1. On installe : `sudo apt-get install uwsgi uwsgi-plugin-rack-ruby1.9.1`
98
-2. On va créer un fichier de configuration `nano /etc/uwsgi/apps-available/brimir.ini` (la conf est dérivée de celle de Redmine)
99
-```
100
-
101
-[uwsgi]
102
-master = true
103
-lazy-apps = true
104
-;idle = 3600
105
-processes = 1
106
-
107
-chdir = /srv/brimir
108
-plugin = rack
109
-rack = config.ru
110
-rbrequire = bundler/setup
111
-env = RAILS_ENV=production
112
-
113
-uid = brimir
114
-gid = brimir
115
-chmod-socket = 770
116
-chown-socket = www-data:www-data
117
-
118
-; lazy-apps
119
-;rbrequire = rubygems
120
-;env = BUNDLE_GEMFILE=/srv/brimir/Gemfile
121
-```
122
-
123
-3. On ajoute l'application aux actives : `cd /etc/uwsgi/apps-enabled/ && ln -s ../apps-available/brimir.ini .`
124
-
125
-4. On peut lancer l'application avec `service uwsgi start brimir` et uWSGI met à disposition le socket pour y accéder dans `/run/uwsgi/app/brimir/socket`.
126
-
127
-### Nginx
128
-
129
-Un serveur web qu'on ne présente plus, léger avec une syntaxe de configuration légère.
130
-
131
-1. On commence par l'installer : `sudo apt-get install nginx`
132
-2. On créé le fichier de conf qui va bien sudo nano /etc/nginx/sites-enabled/support.conf (de nouveau, basé sur l'exemple Redmine) :
133
-```
134
-server {
135
- listen 172.22.42.20:443 ssl;
136
-
137
- server_name support.resel.fr;
138
-
139
- ssl_certificate /etc/nginx/ssl/resel.pem;
140
- ssl_certificate_key /etc/nginx/ssl/resel.key;
141
-
142
- access_log /var/log/nginx/access_support.resel.fr.log;
143
- error_log /var/log/nginx/errors_support.resel.fr.log;
144
-
145
- root "/srv/brimir/public";
146
-
147
- # "API" de création des tickets par email .. désolé mais on filtre, que pour l'interne
148
- # Seul le serveur mail / les serveurs internes peuvent envoyer, pour les autres, on envoi un vrai faux 404
149
- # http://stackoverflow.com/questions/26369128/how-to-deny-with-404-on-nginx
150
- location = /fake-internal-404.html {
151
- internal; #return 404
152
- }
153
- location = /tickets.json {
154
- error_page 403 404 /fake-internal-404.html;
155
- # https://trac.nginx.org/nginx/ticket/633 : la ligne suivante ne fonctionne pas ..
156
-# limit_except GET {
157
- #allow all;
158
- allow ipv4-adm-brest/23;
159
- allow ipv4-pub-brest/23;
160
- allow ipv4-adm-rennes/23;
161
- allow ipv4-pub-rennes/23;
162
- allow ipv6-adm-brest/64;
163
- allow ipv6-pub-brest/64;
164
- allow ipv6-adm-rennes/64;
165
- allow ipv6-pub-rennes/64;
166
- deny all;
167
-# }
168
- try_files $uri @brimir;
169
- }
170
-
171
- location / {
172
- try_files $uri @brimir;
173
- }
174
-
175
- location @brimir {
176
- include uwsgi_params;
177
- uwsgi_modifier1 7;
178
- uwsgi_pass unix:/run/uwsgi/brimir.sock;
179
- }
180
-
181
-}
182
-```
183
-
184
-Bonus :
185
-```
186
-
187
-tails ~ % cat /etc/nginx/sites-enabled/http-redirect.conf
188
-server {
189
- listen [::]:80 default_server;
190
-
191
- # http://serverfault.com/questions/67316/in-nginx-how-can-i-rewrite-all-http-requests-to-https-while-maintaining-sub-dom
192
- return 301 https://$server_name$request_uri;
193
-}
194
-```
195
-
196
-3. On ajoute le site aux sites actifs : `cd /etc/nginx/sites-enabled/ && ln -s ../sites-available/support.conf .`
197
-
198
-4. On peut lancer ou relancer nginx
199
-
200
-### Réception de mail
201
-
202
-
203
-
204
-L'envoi des mails à l'appli de support est très propre et fait simplement appel à cURL.
205
-Il faut mettre en place le script script/post-mail sur le serveur de mail (par exemple dans `/srv/scripts/brimir/`), puis modifier le fichier d'aliases (`/etc/aliases`) pour y ajouter :
206
-```
207
-brimir: "|/bin/sh /srv/scripts/brimir/post-mail https://support.resel.fr/tickets.json"
208
-support: brimir
209
-inscription: brimir
210
-```
211
-
212
-et enfin recharger la base d'aliases postalias /etc/aliases puis recharger postfix pour un effet imémdiat service postfix reload.
213
-
214
-
215
-### Débug
216
-
217
-On peut utiliser `curl` pour débuguer :
218
-
219
-```
220
-curl --data-urlencode message@- -v https://support.resel.fr/tickets.json <<EOF
221
-Date: Tue, 7 Feb 2017 01:45:22 +0100 (CET)
222
-From: stupid@resel.fr
223
-To: support@resel.fr
224
-Message-ID: <random_id@test>
225
-Subject: coucou :)
226
-
227
-Yo !
228
-
229
-EOF
230
-```
231
-
232
-Quelques liens :
233
-* https://github.com/ivaldi/brimir/
234
-* https://stackoverflow.com/questions/3681329/rails-3s-bundle-install-and-bundle-install-deployment-both-work-well-exce
235
-* https://github.com/rails/execjs
236
-* http://www.norbauer.com/rails-consulting/notes/git-revert-reset-a-single-file.html
237
-* https://stackoverflow.com/questions/9202324/execjs-could-not-find-a-javascript-runtime-but-execjs-and-therubyracer-are-in
238
-* https://stackoverflow.com/questions/6282307/execjs-and-could-not-find-a-javascript-runtime
239
-* https://github.com/nodejs/node-v0.x-archive/wiki/Installing-Node.js-via-package-manager#debian-and-ubuntu-based-linux-distributions
240
-* https://stackoverflow.com/questions/11513623/bundler-you-are-trying-to-install-in-deployment-mode-after-changing-your-gemfil
241
-* http://www.databasically.com/2010/10/22/what-time-is-it-or-handling-timezones-in-rails/
242
-* https://stackoverflow.com/questions/8395748/devise-with-ldap-auth-problems
... ...
\ No newline at end of file