diff options
Diffstat (limited to 'docs/guides/migrate-etherpad.md')
-rw-r--r-- | docs/guides/migrate-etherpad.md | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/docs/guides/migrate-etherpad.md b/docs/guides/migrate-etherpad.md deleted file mode 100644 index 79784ef7..00000000 --- a/docs/guides/migrate-etherpad.md +++ /dev/null @@ -1,128 +0,0 @@ -# Pad migration guide from etherpad-lite - -The goal of this migration is to do a "dumb" import from all the pads in Etherpad, to notes in -HedgeDoc. In particular, the url locations of the pads in Etherpad will be lost. Furthermore, any -metadata in Etherpad, such as revisions, author data and also formatted text will not be migrated -to HedgeDoc (only the plain text contents). - -Note that this guide is not really meant as a support guide. I migrated my own Etherpad to HedgeDoc, -and it turned out to be quite easy in my opinion. In this guide I share my experience. Stuff may -require some creativity to work properly in your case. When I wrote this guide, I was using -[etherpad 1.7.0][] and [codimd 1.2.1][]. Good luck! - -## 0. Requirements - -- `curl` -- running Etherpad server -- running HedgeDoc server -- [hedgedoc-cli][] - -## 1. Retrieve the list of pads - -First, compose a list of all the pads that you want to have migrated from your Etherpad. Other than -the admin interface, Etherpad does not have a dedicated function to dump a list of all the pads. -However, the Etherpad wiki explains how to list all the pads by [talking directly to the -database][howtolistallpads]. - -You will end up with a file containing a pad name on each line: - -```bash -date-ideas -groceries -london -weddingchecklist -(...) -``` - -## 2. Run the migration - -Download [hedgedoc-cli][] and put the script in the same directory as the file containing the pad names. -Add to this directory the file listed below, I called it `migrate-etherpad.sh`. Modify at least the -configuration settings `ETHERPAD_SERVER` and `HEDGEDOC_SERVER`. - -```shell -#!/bin/sh - -# migrate-etherpad.sh -# -# Description: Migrate pads from etherpad to HedgeDoc -# Author: Daan Sprenkels <hello@dsprenkels.com> - -# This script uses the HedgeDoc command line script[1] to import a list of pads from -# [1]: https://github.com/hedgedoc/cli/blob/master/bin/hedgedoc - -# The base url to where etherpad is hosted -ETHERPAD_SERVER="https://etherpad.example.com" - -# The base url where HedgeDoc is hosted -HEDGEDOC_SERVER="https://hedgedoc.example.com" - -# Write a list of pads and the urls which they were migrated to -REDIRECTS_FILE="redirects.txt" - - -# Fail if not called correctly -if (( $# != 1 )); then - echo "Usage: $0 PAD_NAMES_FILE" - exit 2 -fi - -# Do the migration -for PAD_NAME in $1; do - # Download the pad - PAD_FILE="$(mktemp)" - curl "$ETHERPAD_SERVER/p/$PAD_NAME/export/txt" >"$PAD_FILE" - - # Import the pad into HedgeDoc - OUTPUT="$(./hedgedoc import "$PAD_FILE")" - echo "$PAD_NAME -> $OUTPUT" >>"$REDIRECTS_FILE" -done -``` - -Call this file like this: - -```shell -./migrate-etherpad.sh pad_names.txt -``` - -This will download all the pads in `pad_names.txt` and put them on HedgeDoc. They will get assigned -random ids, so you won't be able to find them. The script will save the mappings to a file though -(in my case `redirects.txt`). You can use this file to redirect your users when they visit your -etherpad using a `301 Permanent Redirect` status code (see the next section). - -## 3. Setup redirects (optional) - -I got a `redirects.txt` file that looked a bit like this: - -```log -date-ideas -> Found. Redirecting to https://hedgedoc.example.com/mPt0KfiKSBOTQ3mNcdfn -groceries -> Found. Redirecting to https://hedgedoc.example.com/UukqgwLfhYyUUtARlcJ2_y -london -> Found. Redirecting to https://hedgedoc.example.com/_d3wa-BE8t4Swv5w7O2_9R -weddingchecklist -> Found. Redirecting to https://hedgedoc.example.com/XcQGqlBjl0u40wfT0N8TzQ -(...) -``` - -Using some `sed` magic, I changed it to an nginx config snippet: - -```nginx -location = /p/date-ideas { - return 301 https://hedgedoc.example.com/mPt0M1KfiKSBOTQ3mNcdfn; -} -location = /p/groceries { - return 301 https://hedgedoc.example.com/UukqgwLfhYyUUtARlcJ2_y; -} -location = /p/london { - return 301 https://hedgedoc.example.com/_d3wa-BE8t4Swv5w7O2_9R; -} -location = /p/weddingchecklist { - return 301 https://hedgedoc.example.com/XcQGqlBjl0u40wfT0N8TzQ; -} -``` - -I put this file into my `etherpad.example.com` nginx config, such that all the users would be -redirected accordingly. - -[etherpad 1.7.0]: https://github.com/ether/etherpad-lite/tree/1.7.0 -[codimd 1.2.1]: https://github.com/hedgedoc/hedgedoc/tree/1.2.1 -[hedgedoc-cli]: https://github.com/hedgedoc/cli/blob/master/bin/hedgedoc -[howtolistallpads]: https://github.com/ether/etherpad-lite/wiki/How-to-list-all-pads/49701ecdcbe07aea7ad27ffa23aed0d99c2e17db |