Project

General

Profile

proposition_mep.md

Proposition MEP - Source - William Petit, 07/10/2017 03:23 PM

Download (3.27 KB)

 
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.