-
Pierre Ozoux authoreda450375d
webapp.md 2.16 KiB
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)