Aggiornamento da cPassMan a Teampass

Informazioni preliminari

La procedura prevede di partire dalla versione 1.8.2 di cpassman e arrivare alla versione 2.1.27.23. L’aggiornamento viene fatto inizialmente replicando l’installazione attuale (versione 1.8.2) e poi andando man mano a sosituire i file delle nuove versioni aggiornando di volta in volta il database.

Prima di ogni estrazione salvare i files include/settings.php, include/sk.php (sulle nuove versioni dalla 2.1.26.1 include/config/settings.php, include/config/tp.config.php, include/lib/csrfp/libs/csrfp.config.php, include/sk.php e include/teampass-seckey.txt) e cancellare tutto il contenuto della cartella ./files.
Dopo ogni estrazione ripristinare i file salvati e lanciare http://cpassman.docker.local/install/upgrade.php per l’aggiornamento del dataase.

Ricordarsi ogni volta che si estrae lo zip dei file aggiornati di Teampass di fare

chown 1000:1000 -R files/.

per sistemare i permessi

Utilizzando docker-compose.yml sottostante la procedura risulta essere leggermente più semplice

version: '3'
services:
  cpassman-db:
    image: mysql/mysql-server:5.6
    container_name: cpassman-db
    restart: "no"
    labels:
      - com.centurylinklabs.watchtower.enable=true
    volumes:
      - ./db:/var/lib/mysql
    networks:
      - backend
    environment:
      MYSQL_ROOT_PASSWORD: teampass
      MYSQL_DATABASE: teampass
      MYSQL_PASSWORD: teampass
      MYSQL_USER: teampass
  cpassman:
    image: webdevops/php-apache:centos-7-php56
    #image: webdevops/php-apache:centos-7
    container_name: cpassman
    restart: "no"
    labels:
      - com.centurylinklabs.watchtower.enable=true
      - traefik.port=80
      - traefik.enable=true
      - traefik.frontend.rule=Host:cpassman.docker.local
      - traefik.docker.network=traefik_webgateway
    networks:
      - backend
      - traefik
    volumes:
      - ./files:/app
    environment:
      php.session.save_path: /tmp
  cpassman-pma:
    image: phpmyadmin/phpmyadmin
    container_name: cpassman-pma
    restart: "no"
    labels:
      - com.centurylinklabs.watchtower.enable=true
      - traefik.port=80
      - traefik.enable=true
      - traefik.frontend.rule=Host:cpassman-pma.docker.local
      - traefik.docker.network=traefik_webgateway
    networks:
      - backend
      - traefik
    links:
      - cpassman-db:db
networks:
  backend:
    driver: bridge
  traefik:
    external:
      name: traefik_webgateway

Passi da seguire

  • Copiare tutta la cartella dei files di cpassman dal server web alla cartella ./files del container Cpassman
  • Prima di procedere al primo aggiornamento va modificato l’indirizzo del database nel file include/settings.php
  • Utilizzare da questo momento per il container cpassman l’immagine con PHP 5.4 (webdevops/php-apache:centos-7).
    • Lanciare un docker-compose up per avviare tutto lo stack.
    • Entrare nel container cpassman (docker exec -ti cpassman /bin/bash) e lanciare i comandi
mkdir /var/lib/php/session
chmod 777 /var/lib/php/session

Da 1.8.2 a 2.1.15

  • Conservare il file include/settings.php e include/sk.php
  • Definire nel file settings.php il nuovo path del file sk.php (/app/includes)
  • Lanciare la query SQL
UPDATE cpassman_misc SET valeur='/app' WHERE intitule='cpassman_dir'
  • per modificare il valore della directory principale di Cpassman
  • Modificare il nome del sito e il path nella parte di amminsitrazione di Cpassman
  • Scompattare lo zip e lanciare upgrade.php

Da 2.1.15 a .18

  • Conservare il file include/settings.php e include/sk.php
  • Scompattare lo zip e lanciare upgrade.php (il re-encrypt delle password piuttosto lungo)

Da 2.1.18 a .20

  • Conservare il file include/settings.php e include/sk.php
  • Scompattare lo zip e lanciare upgrade.php (il re-encrypt delle password piuttosto lungo)

Da 2.1.20 a .22

  • Conservare il file include/settings.php e include/sk.php
  • Scompattare lo zip e lanciare upgrade.php (il re-encrypt delle password lungo)

Da 2.1.22 a .23.1

  • Conservare il file include/settings.php e include/sk.php
  • Scompattare lo zip e lanciare upgrade.php (il re-encrypt delle password breve)

Da 2.1.23.1 a .23.4

  • Conservare il file include/settings.php e include/sk.php
  • Scompattare lo zip e lanciare upgrade.php (il re-encrypt delle password breve)

Da 2.1.23.4 a .25.2

  • Conservare il file include/settings.php e include/sk.php
  • Scompattare lo zip e lanciare upgrade.php (il re-encrypt delle password breve)
  • Utilizzare da questo momento per il container cpassman l’immagine con PHP 5.6 (webdevops/php-apache:centos-7-php56)
    • Lanciare un docker-compose down per terminare tutto lo stack
    • Modificare l’immagine
    • Lanciare un docker-compose up per avviare tutto lo stack
    • Entrare nel container cpassman (docker exec -ti cpassman /bin/bash) e lanciare i comandi
mkdir /var/lib/php/session
chmod 777 /var/lib/php/session

Da 2.1.25.2 a 26.1

  • Conservare il file include/settings.php e include/sk.php
  • Scompattare lo zip e lanciare upgrade.php
  • Alla fine della procedura non appare Open Temapass

Da 2.1.26.1 a 26.20

  • Conservare il file include/config/settings.php, include/config/tp.config.php, include/lib/csrfp/libs/csrfp.config.php, include/sk.php, include/teampass-seckey.txt
  • Scompattare lo zip e lanciare upgrade.php

Da 2.1.26.20 a fin2

  • Conservare il file include/config/settings.php, include/config/tp.config.php, include/lib/csrfp/libs/csrfp.config.php, include/sk.php, include/teampass-seckey.txt
  • Scompattare lo zip e lanciare upgrade.php

Da 2.1.26.fin2 a fin3

  • Conservare il file include/config/settings.php, include/config/tp.config.php, include/lib/csrfp/libs/csrfp.config.php, include/sk.php, include/teampass-seckey.txt
  • Scompattare lo zip e lanciare upgrade.php

Da 2.1.26.fin3 a .27.16

  • Conservare il file include/config/settings.php, include/config/tp.config.php, include/lib/csrfp/libs/csrfp.config.php, include/sk.php, include/teampass-seckey.txt
  • Scompattare lo zip
  • Impostare le permission 550 su sk.php
  • Lanciare upgrade.php

Da 2.1.27.16 a .27.20

  • Conservare il file include/config/settings.php, include/config/tp.config.php, include/lib/csrfp/libs/csrfp.config.php, include/sk.php, include/teampass-seckey.txt
  • Scompattare lo zip e lanciare upgrade.php

Da 2.1.27.20 a .27.23

  • Conservare il file include/config/settings.php, include/config/tp.config.php, include/lib/csrfp/libs/csrfp.config.php, include/sk.php, include/teampass-seckey.txt
  • Scompattare lo zip e lanciare upgrade.php
  • Verificare nell’interfaccia di amministrazione le configurazioni (orario, mail ecc…)

Indicazioni finali

  • Nel caso vada spostata l’installazione di Teampass dallo stack docker su un altro server è necessario cambiare prima i path e il sito nell’interfaccia di amministrazione grafica, nel file settings.php e nel file tp.config.php
  • Impostare poi i permessi su 644 per i file e 755 per le directory

Errori post migrazione

Nel caso appaiano degli errori di tipo JSON quando si va in ricerca su index.php?page=find o su altre pagine, simili a
“DataTables warning: table id=t_items – Invalid JSON response”
sono dovuti ad item che contengono nel titolo o nella descrizione dei caratteri speciali non corretti.

Si possono scoprire gli item andando a vedere le risposte XHR (restituite dopo una ricerca) tramite gli strumenti da sviluppatore del browser (F12). Verranno visualizzati JSON non formattati correttamente e si vedrà l’ultimo item che “rompe” il JSON.

Per modificare i caratteri individuati come problematici lanciare sul database una query, ad esempio per sostituire all’interno del campo description il \r\n con <br/> usare

//verificare se ci sono item di quel tipo da correggere
SELECT * FROM cpassman_items WHERE description LIKE CONCAT('%', CHAR(13), '%');
SELECT * FROM cpassman_items WHERE description LIKE CONCAT('%', CHAR(10), '%');

//fare il replace
UPDATE cpassman_items SET description=REPLACE(description, CHAR(13), '<br/>')
UPDATE cpassman_items SET description=REPLACE(description, CHAR(10), '<br/>')

al termine lanciare il comando Reload cache table dall’interfaccia di amministrazione di Teampass (sezione Task).

Comportamenti differenti tra versione passata ed attuale

  • I link negli item se non presentano la prima parte con il protocollo (es. www.sito.it invece di http://www.sito.it) vengono aperti come indirizzi relativi all’URL di Teampass
  • Le cartelle nella home page dell’utente che accede la prima volta non di presentano come espanse ma compresse
  • Non è possibile effettuare una ricerca direttamente dalla home page dopo il primo accesso, prima va cliccato su un item qualsiasi e poi è possibile usare il campo ricerca in alto a destra
  • Può essere utile dare lanciare un aggiornamento della pagina con CTRL+F5 dopo il primo accesso
Taggato , . Aggiungi ai preferiti : Permalink.

I commenti sono chiusi