Migrazione da Owncloud a Nextcloud

From RVM Wiki
Jump to navigation Jump to search

La migrazione è possibile da Owncloud 10.13 a Nextcloud 25, poi si aggiorna.

La migrazione verrà fatta da una installazione in OS ad una con container Docker

Usare il docker-compose.yml:

services:
  nextcloud-cro-db:
    image: mariadb:10.6
    container_name: nextcloud-cro-db
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - ./mysql:/var/lib/mysql
      - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
    environment:
      - TZ=Europe/Rome
      - MYSQL_ROOT_PASSWORD=rootnext
      - MYSQL_PASSWORD=6MtE2Dmq
      - MYSQL_DATABASE=owncloud
      - MYSQL_USER=owncloud

  nextcloud-cro-redis:
    image: redis:alpine
    container_name: nextcloud-cro-redis
    restart: unless-stopped

  nextcloud-cro-app:
    container_name: nextcloud-cro-app
    image: nextcloud:25
    restart: always
    ports:
      - 8182:80
    #links:
    depends_on:
      - nextcloud-cro-db
      - nextcloud-cro-redis
    volumes:
      - ./www:/var/www/html
      - ./data:/var/www/html/data
      - ./custom_apps:/var/www/html/custom_apps
      - ./config:/var/www/html/config
    environment:
      - TZ=Europe/Rome
      #- NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.croalliance.com
      - APPIMAGE_EXTRACT_AND_RUN=1
      #- TRUSTED_PROXIES=192.168.10.125
      #- OVERWRITEHOST=nextcloud.croalliance.com
      #- OVERWRITEPROTOCOL=https
      - MYSQL_PASSWORD=6MtE2Dmq
      - MYSQL_DATABASE=owncloud
      - MYSQL_USER=owncloud
      - MYSQL_HOST=nextcloud-cro-db
      - REDIS_HOST=nextcloud-cro-redis

  nextcloud-cro-cron:
    image: nextcloud:25
    container_name: nextcloud-cro-cron
    restart: unless-stopped
    environment:
      - TZ=Europe/Rome
      #- NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.croalliance.com
      - APPIMAGE_EXTRACT_AND_RUN=1
      #- TRUSTED_PROXIES=192.168.10.125
      #- OVERWRITEHOST=nextcloud.croalliance.com
      #- OVERWRITEPROTOCOL=https
      - MYSQL_PASSWORD=6MtE2Dmq
      - MYSQL_DATABASE=owncloud
      - MYSQL_USER=owncloud
      - MYSQL_HOST=nextcloud-cro-db
    volumes:
      - ./www:/var/www/html
      - ./data:/var/www/html/data
      - ./custom_apps:/var/www/html/custom_apps
      - ./config:/var/www/html/config
    entrypoint: /cron.sh
    depends_on:
      - nextcloud-cro-app

#  nextcloud-cro-phpmyadmin:
#    image: phpmyadmin
#    container_name: nextcloud-cro-phpmyadmin
#    restart: always
#    ports:
#      - 8888:80
#    environment:
#      - PMA_ARBITRARY=1
#      - MYSQL_ROOT_PASSWORD=rootnext
#      - PMA_HOST=nextcloud-cro-db

Esportare il DB da owncloud 10.13:

mysqldump --databases owncloud > owncloud.sql

Prepararlo per il caricamento automatico nel container docker:

mkdir docker-entrypoint-initdb.d/
mv owncloud.sql docker-entrypoint-initdb.d/

Copiare la config di Owncloud e cambiare il DB Host:

mkdir config
cp /var/owncloud/config/config.php /home/docker/nextcloud.croalliance.com/config/config.php

cambiare

vi config/config.php
  'dbhost' => 'nextcloud-cro-db',

Verificare in config.php i valori di:

  'dbname' => 'owncloud',
  'dbuser' => 'theusername',
  'dbpassword' => 'thepassword',

Impostare docker-compose.yml per nextcloud 25 e parametri mysql uguali a Owncloud, tranne MYSQL_HOST

 nextcloud-cro-app:
   image: nextcloud:25
   environment:
     MYSQL_HOST=nextcloud-cro-db
     MYSQL_USER=theusername
     MYSQL_PASSWORD=thepassword
     MYSQL_DATABASE=owncloud
     # ...
 nextcloud-cro-cron:
   image: nextcloud:25
   environment:
     MYSQL_HOST=nextcloud-cro-db
     MYSQL_USER=theusername
     MYSQL_PASSWORD=thepassword
     MYSQL_DATABASE=owncloud
     # ...
 nextcloud-cro-db:
     MYSQL_USER=theusername
     MYSQL_PASSWORD=thepassword
     MYSQL_DATABASE=owncloud

Per poter accedere senza reverse proxy, disabilitare i settaggi in conig.php e i docker-compose.yml per accedere direttamente come http://ip.of.docker.host:8182

vi docker-compose.yml
  nextcloud-cro-app:
    environment:
      #- NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.example.com
      #- TRUSTED_PROXIES=192.168.10.125
      #- OVERWRITEHOST=nextcloud.example.com
      #- OVERWRITEPROTOCOL=https
vi config/config.php
  #'forcessl' => true,
  #'overwriteprotocol' => 'https',

Avviare solo il DB per caricare i dati:

docker compose up nextcloud-cro-db

Attendere il completamento di entrypoint-initdb.d

Spegnere il DB

docker compose down

Avviare lo stack

docker compose up

Attendere che si avvi, loggandosi all apgina http://ip.of.docker.host:8182 dove viene richiesto di fare upgrade. Se non chiede upgrade, interrompere ed indagare.

Lanciare l'upgrade manualmente

docker compose exec -u www-data nextcloud-cro-app php occ upgrade -v

Sistemare il DB:

docker compose exec -u www-data nextcloud-cro-app php occ db:convert-filecache-bigint
docker compose exec -u www-data nextcloud-cro-app php occ db:add-missing-indices
docker compose exec -u www-data nextcloud-cro-app php occ db:add-missing-columns
docker compose exec -u www-data nextcloud-cro-app php occ db:add-missing-primary-keys

Disabilitare la maintenance e testare:

docker compose exec -u www-data nextcloud-cro-app php occ maintenance:mode --off

Accedere http://ip.of.docker.host:8182

Aggiornare i files:

docker compose exec -u www-data nextcloud-cro-app  php occ files:scan --all


Impostare i parametri in docker-compose.yml:

  nextcloud-cro-app:
    environment:
      - NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.example.com
      - TRUSTED_PROXIES=192.168.10.125
      - OVERWRITEHOST=nextcloud.example.com
      - OVERWRITEPROTOCOL=https

Configurare il reverse proxy di frontend, e verificare i check dalla pagina "Administration".

Proseguire aggiornando di una versione alla volta da docker-compose.yml cambiando il tag dell'image di un versione alla volta nei container -app e -cron

Riferimenti