+++ /dev/null
-version: '2.2'
-
-services:
- postgres:
- image: postgres:12-alpine
- environment:
- - POSTGRES_USER=lemmy
- - POSTGRES_PASSWORD=password
- - POSTGRES_DB=lemmy
- volumes:
- - ./volumes/postgres:/var/lib/postgresql/data
- restart: always
-
- lemmy:
- image: dessalines/lemmy:0.16.1
- ports:
- - "127.0.0.1:8536:8536"
- - "127.0.0.1:6669:6669"
- restart: always
- environment:
- - RUST_LOG="warn,lemmy_server=info,lemmy_api=info,lemmy_api_common=info,lemmy_api_crud=info,lemmy_apub=info,lemmy_db_schema=info,lemmy_db_views=info,lemmy_db_views_actor=info,lemmy_db_views_moderator=info,lemmy_routes=info,lemmy_utils=info,lemmy_websocket=info"
- volumes:
- - ./lemmy.hjson:/config/config.hjson
- depends_on:
- - postgres
- - pictrs
-
- lemmy-ui:
- image: dessalines/lemmy-ui:0.16.1
- ports:
- - "127.0.0.1:1235:1234"
- restart: always
- environment:
- - LEMMY_INTERNAL_HOST=lemmy:8536
- - LEMMY_EXTERNAL_HOST=localhost:8536
- - LEMMY_HTTPS=true
- depends_on:
- - lemmy
-
- pictrs:
- image: asonix/pictrs:0.3.0-beta.12-r1
- ports:
- - "127.0.0.1:8537:8080"
- - "127.0.0.1:6670:6669"
- user: 991:991
- volumes:
- - ./volumes/pictrs:/mnt
- restart: always
-
+++ /dev/null
-#!/bin/bash
-set -e
-
-if [[ $(id -u) != 0 ]]; then
- echo "This migration needs to be run as root"
- exit
-fi
-
-if [[ ! -f docker-compose.yml ]]; then
- echo "No docker-compose.yml found in current directory. Is this the right folder?"
- exit
-fi
-
-if ! which jq > /dev/null; then
- echo "jq must be installed to run this migration. On ubuntu systems, try 'sudo apt-get install jq'"
- exit
-fi
-
-# Fixing pictrs permissions
-mkdir -p volumes/pictrs
-sudo chown -R 991:991 volumes/pictrs
-
-echo "Restarting docker-compose, making sure that pictrs is started and pictshare is removed"
-docker-compose up -d --remove-orphans
-
-if [[ -z $(docker-compose ps | grep pictrs) ]]; then
- echo "Pict-rs is not running, make sure you update Lemmy first"
- exit
-fi
-
-# echo "Stopping Lemmy so that users dont upload new images during the migration"
-# docker-compose stop lemmy
-
-CRASHED_ON=()
-
-pushd volumes/pictshare/
-echo "Importing pictshare images to pict-rs..."
-IMAGE_NAMES=*
-for image in $IMAGE_NAMES; do
- IMAGE_PATH="$(pwd)/$image/$image"
- if [[ ! -f $IMAGE_PATH ]]; then
- continue
- fi
- res=$(curl -s -F "images[]=@$IMAGE_PATH" http://127.0.0.1:8537/import | jq .msg)
- if [ "${res}" == "" ]; then
- echo -n "C" >&2
- echo ""
- CRASHED_ON+=("${IMAGE_PATH}")
- echo "Failed to import $IMAGE_PATH with no error message"
- echo " assuming crash, sleeping"
- sleep 10
- continue
- fi
- if [ "${res}" != "\"ok\"" ]; then
- echo -n "F" >&2
- echo ""
- echo "Failed to import $IMAGE_PATH"
- echo " Reason: ${res}"
- else
- echo -n "." >&2
- fi
-done
-
-for image in ${CRASHED_ON[@]}; do
- echo "Retrying ${image}"
- res=$(curl -s -F "images[]=@$IMAGE_PATH" http://127.0.0.1:8537/import | jq .msg)
- if [ "${res}" != "\"ok\"" ]; then
- echo -n "F" >&2
- echo ""
- echo "Failed to upload ${image} on 2nd attempt"
- echo " Reason: ${res}"
- else
- echo -n "." >&2
- fi
-done
-
-echo "Fixing permissions on pictshare folder"
-find . -type d -exec chmod 755 {} \;
-find . -type f -exec chmod 644 {} \;
-
-popd
-
-echo "Rewrite image links in Lemmy database"
-docker-compose exec -u postgres postgres psql -U lemmy -c "UPDATE user_ SET avatar = REPLACE(avatar, 'pictshare', 'pictrs/image') WHERE avatar is not null;"
-docker-compose exec -u postgres postgres psql -U lemmy -c "UPDATE post SET url = REPLACE(url, 'pictshare', 'pictrs/image') WHERE url is not null;"
-
-echo "Moving pictshare data folder to pictshare_backup"
-mv volumes/pictshare volumes/pictshare_backup
-
-echo "Migration done, starting Lemmy again"
-echo "If everything went well, you can delete ./volumes/pictshare_backup/"
-docker-compose start lemmy