diff --git a/.gitignore b/.gitignore index 1e14d28..57d9655 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -docker-volume/ +volumes/ diff --git a/docker-compose.yaml b/docker-compose.yaml index 6210c72..32a9e81 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -10,7 +10,7 @@ services: - "443:443" # The HTTPS port volumes: - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events - - ./docker-volumes/traefik/acme.json:/etc/acme.json + - ./volumes/traefik/acme.json:/etc/acme.json - ./traefik.toml:/traefik.toml restart: "always" # If you want to use the Traefik dashboard, you should expose it on a @@ -27,8 +27,9 @@ services: traefik.frontend.rule: "Host:${PEERTUBE_WEBSERVER_HOSTNAME}" traefik.port: "9000" volumes: - - ./docker-volumes/data:/data - - ./docker-volumes/config:/config + - ./volumes/data:/data + - /mnt/external:/data-external + - ./volumes/config:/config depends_on: - postgres - redis @@ -42,7 +43,7 @@ services: POSTGRES_PASSWORD: ${PEERTUBE_DB_PASSWORD} POSTGRES_DB: peertube volumes: - - ./docker-volumes/db:/var/lib/postgresql/data + - ./volumes/db:/var/lib/postgresql/data restart: "always" labels: traefik.enable: "false" @@ -50,7 +51,7 @@ services: redis: image: redis:5-alpine volumes: - - ./docker-volumes/redis:/data + - ./volumes/redis:/data restart: "always" labels: - "traefik.enable=false" diff --git a/migration.sh b/migration.sh index bbe92b5..cd0929a 100755 --- a/migration.sh +++ b/migration.sh @@ -4,24 +4,18 @@ set -e DOMAIN="peertube.social" OLD_SERVER="migration-user@$DOMAIN" OLD_BASE_FOLDER="/var/www/peertube" -NEW_BASE_FOLDER="/peertube/docker-volumes" +NEW_BASE_FOLDER="/peertube/volumes" RSYNC_PARAMS="-a --rsync-path=\"sudo rsync\" --bwlimit=5000" function sync-volumes { mkdir -p "$NEW_BASE_FOLDER" mkdir -p "$NEW_BASE_FOLDER/data/" - rsync $RSYNC_PARAMS "$OLD_SERVER:$OLD_BASE_FOLDER/config/" "$NEW_BASE_FOLDER/config/" rsync $RSYNC_PARAMS "$OLD_SERVER:$OLD_BASE_FOLDER/storage/avatars/" "$NEW_BASE_FOLDER/data/avatars/" rsync $RSYNC_PARAMS "$OLD_SERVER:$OLD_BASE_FOLDER/storage/cache/" "$NEW_BASE_FOLDER/data/cache/" rsync $RSYNC_PARAMS "$OLD_SERVER:$OLD_BASE_FOLDER/storage/captions/" "$NEW_BASE_FOLDER/data/captions/" rsync $RSYNC_PARAMS "$OLD_SERVER:$OLD_BASE_FOLDER/storage/previews/" "$NEW_BASE_FOLDER/data/previews/" rsync $RSYNC_PARAMS "$OLD_SERVER:$OLD_BASE_FOLDER/storage/thumbnails/" "$NEW_BASE_FOLDER/data/thumbnails/" rsync $RSYNC_PARAMS "$OLD_SERVER:$OLD_BASE_FOLDER/storage/torrents/" "$NEW_BASE_FOLDER/data/torrents/" - - # TODO: change folders in config/docker-compose - rsync $RSYNC_PARAMS "$OLD_SERVER:$OLD_BASE_FOLDER/storage/external/videos/" "/mnt/external/videos/" - rsync $RSYNC_PARAMS "$OLD_SERVER:$OLD_BASE_FOLDER/storage/external/redundancy/" "/mnt/external/redundancy/" - rsync $RSYNC_PARAMS "$OLD_SERVER:$OLD_BASE_FOLDER/storage/external/tmp/" "/mnt/external/tmp/" } if [ "$(whoami)" != "root" ]; then @@ -38,9 +32,10 @@ fi echo "Before running this script, ensure the following: - this script is running on the new server (migration target) - docker-compose based setup for peertube is already installed in /peertube/ +- peertube config with adjusted paths is in /peertube/volumes/config/ - set reverse dns for new server to $DOMAIN - set DNS TTL for $DOMAIN to the minimum possible value -- new external storage is mounted under /mnt/external/ +- videos are mounted under /mnt/external - backups are in place and tested (ideally also of videos) " @@ -51,7 +46,7 @@ fi # remove any existing volume files # https://stackoverflow.com/a/790245 -rm -r "$NEW_BASE_FOLDER"/* | true +rm -r "$NEW_BASE_FOLDER/data/" | true # dont delete this because it would take too long to sync #rm -r "/mnt/external/*" | true