iceshrimp/docs/migrate.md
2024-09-14 17:36:07 +02:00

67 lines
4.2 KiB
Markdown

# 🚚 Migrating from Firefish to Iceshrimp
> **Warning**
> Before proceeding, please **ensure you have an *up-to-date* backup of the database.**
## Preparations
First, follow Firefish's [downgrade guide](https://firefish.dev/firefish/firefish/-/blob/downgrade/docs/downgrade.md) to get back to v1.0.5-rc. When prompted to switch the docker image/git tag, make sure to pick `v1.0.5-rc`, and not `v20240206`. This is to make sure that the migration patch applies correctly.
### Docker
First, stop the container by running `docker compose down`.
Now, run `docker-compose run --rm --entrypoint '/bin/bash' web` to get a shell in the main container.
### Bare metal
First, stop the service. If using systemd, run `sudo systemctl stop firefish.service`.
Now, `cd` into the root of your firefish repository.
## Applying the migrations patch
To make sure migrations revert correctly, run `curl -s https://iceshrimp.dev/iceshrimp/iceshrimp/raw/branch/dev/docs/firefish-redis.patch | git apply --ignore-whitespace`. This will patch two built JS files related to redis. The patch is ephemeral, once you complete the migration process it will no longer apply. Iceshrimp-JS has the patch built in.
## Reverting the migrations
To begin, run `cd packages/backend` to switch to the backend workspace.
Now, revert all of the typeorm migrations. reverted. To do this, run the command `pnpm run revertmigration:typeorm` until the output confirms that the migration `FirefishRepo1689957674000` has been reverted successfully.
If migration `IncreaseHostCharLimit1692374635734` failed to revert, please run `DELETE FROM "migrations" WHERE "name" = 'IncreaseHostCharLimit1692374635734';` in the database shell.
If you get any other errors here please ask for support in the [chat room](https://chat.iceshrimp.dev).
Finally, revert all the cargo migrations, by running `pnpm run revertmigration:cargo` until `m20230806_170616_fix_antenna_stream_ids` has been reverted. Again, if you get any errors, please ask for support in the [chat room](https://chat.iceshrimp.dev).
## Switching to Iceshrimp
### Docker
First, run `docker compose down` to shut down firefish.
Now, switch out image for the `web` container with `iceshrimp.dev/iceshrimp/iceshrimp:latest`.
Furthermore, for every volume/mount that's mapped to /firefish, switch it out for /iceshrimp (leaving any trailing text intact).
Finally, run `docker compose up`, and make sure that it starts up correctly. If everything works, press CTRL+C and run `docker compoe up -d` to start it in the background.
If you get any errors on startup, please ask for support in the [chat room](https://chat.iceshrimp.dev).
### Bare metal
Before you begin, make sure `git-lfs` is installed on the system, and that the firefish service is stopped.
Then, switch back to the repository root directory and run `git remote set-url origin https://iceshrimp.dev/iceshrimp/iceshrimp.git`, as well as `git lfs install`.
Now, run `git fetch --all` to fetch the new commits.
If you get an error like `couldn't find remote ref` here, run `git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"`, followed by `git remote prune origin` and `git fetch --all`. If you still get any errors, please ask for support in the [chat room](https://chat.iceshrimp.dev).
Then, run `git checkout dev` to switch to the `dev` branch, or `git checkout <tag>` to switch to a versioned tag. Make sure to run `git lfs pull` as well, to get all the dependencies.
Now, run `yarn && yarn build && yarn migrate` to install dependencies, build the project & run all pending migrations.
Finally, to clean up now-unnecessary files, run `rm -rf packages/backend/native-utils packages/megalodon`.
You should now be able to start the service back up.
If you get any errors during this process, please ask for support in the [chat room](https://chat.iceshrimp.dev).
## Closing notes
Please check out the [example configuration file](https://iceshrimp.dev/iceshrimp/iceshrimp/src/branch/dev/.config/example.yml), as it's changed quite a bit since Firefish and you may want to make use of the new features.
If you need further assistance for any reason, please ask for help in the [chat room](https://chat.iceshrimp.dev), we will assist you with the migration.