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