Skip to content
Snippets Groups Projects

Migration procedure version 0.3

Web application (simplistic procedure)

  • The old hoster puts the site in read-only mode by changing the permissions of the database user to read-only
  • The old hoster creates the migration archive as per the IndieHosters migration format (see below)
  • The old hoster sends the migration archive to the new hoster
  • The new hoster imports the migration archive
  • Once DNR, DNS, and TLS have also been migrated, the old hoster terminates the service.

Web application (advanced procedure)

  • The TLS certificate is sent ahead first
  • The old hoster programmatically creates the migration archive, and immediately posts it to the new hoster via a webhook
  • The webhook programmatically imports the migration archive, and returns the IP address
  • The old hoster programmatically configures the new hoster's public IP address into their load balancer
  • The old hoster's load balancer now forwards (at the TCP level) all traffic to this new IP address
  • Once DNR and DNS transfer are complete, the old hoster terminates the TCP forwarding service.

IndieHosters migration format, version 0.3

General

An IndieHosters migration archive is a directory structure (probably packaged up as a tar file or zip file). There should be an 'indiehosters.json' file in the root of the archive. It should contain at least the following fields:

  • format: the URL of this spec (probably https://indiehosters.net/spec/0.3)
  • application: a string, which determines what the rest of the folder contents should be imported into.

Known

When migrating a Known application, the 'indiehosters.json' file should furthermore contain the following fields:

  • application: 'known'
  • version: the version of Known as a string, for instance '0.6.5'
  • database:
    • engine: the database engine used, either 'mysql' or 'mongodb'
    • name: the database name inside the dump file, for instance 'known'
    • file: the database dump file inside the archive, for instance 'dump.sql'
  • uploads: the uploads folder name inside the archive, for instance 'uploads/'
  • plugins: the folder with any non-standard plugins for instance 'plugins/'

WordPress

(to be determined)