1
|
# Registre NPM EOLE - Mise en production
|
2
|
|
3
|
## Prérequis
|
4
|
|
5
|
- Ubuntu Xenial (16.40)
|
6
|
- Compte administrateur sur la machine
|
7
|
|
8
|
## Primo installation
|
9
|
|
10
|
1. Installer les dépendances systèmes
|
11
|
```shell
|
12
|
apt-get install nodejs nodejs-legacy npm
|
13
|
```
|
14
|
2. Installer le logiciel [Verdaccio](https://github.com/verdaccio/verdaccio) et son connecteur LDAP
|
15
|
```shell
|
16
|
npm install verdaccio verdaccio-ldap -g
|
17
|
```
|
18
|
3. Créer l'utilisateur système pour le service
|
19
|
```shell
|
20
|
useradd --system verdaccio
|
21
|
```
|
22
|
4. Créer les répertoires pour le service
|
23
|
```shell
|
24
|
mkdir -p /etc/verdaccio /var/verdaccio
|
25
|
```
|
26
|
5. Déployer la configuration du service dans `/etc/verdaccio/config.yml`
|
27
|
```yaml
|
28
|
storage: /var/verdaccio
|
29
|
listen:
|
30
|
- 0.0.0.0:8080 # Hote/port d'écoute du service
|
31
|
web:
|
32
|
title: Pôle Logiciels Libres - NPM
|
33
|
auth: # Configuration LDAP d'authentification
|
34
|
ldap:
|
35
|
type: ldap
|
36
|
groupNameAttribute: 'cn'
|
37
|
client_options:
|
38
|
url: "ldaps://platon.ac-dijon.fr:636"
|
39
|
searchBase: "ou=utilisateurs,ou=eole,ou=education,o=gouv,c=fr"
|
40
|
searchFilter: "(uid={{username}})"
|
41
|
cache: False
|
42
|
searchAttributes:
|
43
|
- "*"
|
44
|
- memberOf
|
45
|
tlsOptions:
|
46
|
rejectUnauthorized: False
|
47
|
# a list of other known repositories we can talk to
|
48
|
uplinks:
|
49
|
npmjs:
|
50
|
url: https://registry.npmjs.org/
|
51
|
cache: true
|
52
|
packages:
|
53
|
'eole-**':
|
54
|
access: $authenticated
|
55
|
publish: $authenticated
|
56
|
'**':
|
57
|
access: $all
|
58
|
publish: $authenticated
|
59
|
proxy: npmjs
|
60
|
|
61
|
# log settings
|
62
|
logs:
|
63
|
- {type: stdout, format: pretty, level: http}
|
64
|
```
|
65
|
6. S'assurer des droits d'accès du service à ses répertoires
|
66
|
```shell
|
67
|
chown -R verdaccio:root /etc/verdaccio /var/verdaccio
|
68
|
```
|
69
|
7. Créer le fichier `/etc/systemd/system/verdaccio.service`
|
70
|
```shell
|
71
|
[Unit]
|
72
|
Description=Registre NPM privé
|
73
|
|
74
|
[Service]
|
75
|
ExecStart=/usr/local/bin/verdaccio -c /etc/verdaccio/config.yml
|
76
|
Restart=always
|
77
|
RestartSec=10
|
78
|
StandardOutput=syslog
|
79
|
StandardError=syslog
|
80
|
SyslogIdentifier=verdaccio
|
81
|
User=verdaccio
|
82
|
Group=verdaccio
|
83
|
Environment=NODE_ENV=production
|
84
|
|
85
|
[Install]
|
86
|
WantedBy=multi-user.target
|
87
|
```
|
88
|
8. Activer le service
|
89
|
```shell
|
90
|
systemctl enable verdaccio.service
|
91
|
```
|
92
|
9. Lancer le service
|
93
|
```shell
|
94
|
systemctl start verdaccio.service
|
95
|
```
|
96
|
10. Vérifier le statut du service
|
97
|
```shell
|
98
|
systemctl status verdaccio.service
|
99
|
```
|
100
|
|
101
|
Le service Verdaccio devrait être accessible à l'adresse `http://<hote>:<port>`.
|
102
|
|
103
|
## Mise à jour du service
|
104
|
|
105
|
1. Stopper le service
|
106
|
```shell
|
107
|
systemctl stop verdaccio.service
|
108
|
```
|
109
|
2. Mettre à jour Verdaccio et ses dépendances
|
110
|
```shell
|
111
|
npm update verdaccio verdaccio-ldap -g
|
112
|
```
|
113
|
3. Relancer le service
|
114
|
```shell
|
115
|
systemctl start verdaccio.service
|
116
|
```
|
117
|
4. Vérifier le statut du service
|
118
|
```shell
|
119
|
systemctl status verdaccio.service
|
120
|
```
|
121
|
|
122
|
## Sauvegarde
|
123
|
|
124
|
Verdaccio stocke ses données dans le répertoire référencé par l'attribut `storage` dans son fichier de configuration (avec le modèle proposé ci dessus, `/var/verdaccio`).
|
125
|
|
126
|
Il contient une représentation de la base de données interne du service ainsi que le cache des modules récupérés sur le registre NPM public ou publiés localement par les utilisateurs.
|
127
|
|
128
|
Seul ce répertoire est à sauvegarder/restaurer afin de pérenniser le service.
|