commit 952257f1f73d8b6b5654ab474768c871078682b8 Author: Blake Ridgway Date: Sat Mar 21 18:00:16 2026 -0500 Initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..f2ab120 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +# arcline-migrate + +CLI tool for migrating sites from cPanel/Plesk servers to Arcline. Connects via SSH, exports files, database dumps, and DNS zone into a structured tarball ready to import. + +Reduces migration friction for new customers coming from GoDaddy, Bluehost, SiteGround, and similar hosts. + +## Status + +Planned. Not yet started. + +## Stack + +- Go — single static binary, no runtime dependencies on the client side +- Requires SSH access to the source server and `mysqldump` available remotely + +## Supported sources + +- cPanel (primary target) +- Plesk (stretch goal) +- Generic LAMP/LEMP via SSH (fallback — manual DB credentials) + +## Usage + +```sh +arcline-migrate export --host example.com --user myuser --domain example.com +arcline-migrate export --host example.com --user myuser --domain example.com --out ./export +arcline-migrate verify ./arcline-export-example.com-20260303/ +arcline-migrate import --bundle ./arcline-export-*.tar.gz # future +``` + +## Export bundle layout + +``` +arcline-export-example.com-20260303/ +├── files/ # public_html contents +├── databases/ +│ └── db_name.sql # mysqldump output +├── dns/ +│ └── example.com.zone +├── config/ +│ └── php.ini +└── manifest.json # domain, PHP version, MySQL version, export date +``` + +See [todo.md](todo.md) for the full task list. diff --git a/todo.md b/todo.md new file mode 100644 index 0000000..9dfe6ce --- /dev/null +++ b/todo.md @@ -0,0 +1,50 @@ +# arcline-migrate — Shared Hosting Migration Tool + +Connects to a cPanel/Plesk server via SSH, exports files + DB dump + DNS zone +into a structured tarball ready to import on Arcline. Lowers migration friction. + +## Stack +- Language: Go +- Distribution: single static binary +- Requires: SSH access to source server, mysqldump on remote + +## Supported Sources +- cPanel (primary target) +- Plesk (stretch goal) +- Generic LAMP/LEMP via SSH (fallback mode) + +## Export bundle structure +``` +arcline-export-example.com-20260303/ +├── files/ # public_html contents (rsync over SSH) +├── databases/ +│ └── db_name.sql # mysqldump output +├── dns/ +│ └── example.com.zone # BIND zone file (from cPanel API or manual) +├── config/ +│ └── php.ini # detected PHP version + key settings +└── manifest.json # metadata: domain, PHP version, MySQL version, export date +``` + +## CLI interface +``` +arcline-migrate export --host example.com --user myuser --domain example.com +arcline-migrate export --host example.com --user myuser --domain example.com --out ./export +arcline-migrate verify ./arcline-export-example.com-20260303/ # validate bundle +arcline-migrate import --bundle ./arcline-export-*.tar.gz # future: direct import +``` + +## Tasks +- [ ] Project scaffold +- [ ] SSH connection handler (password + key auth) +- [ ] File export: rsync-style copy over SSH (public_html) +- [ ] Database export: run mysqldump remotely, stream result +- [ ] cPanel API integration: fetch DB list, DNS zone, PHP version +- [ ] Generic mode: prompt user for DB name/user/pass if no cPanel API +- [ ] DNS zone export (cPanel API → BIND format) +- [ ] manifest.json writer +- [ ] Bundle: tar.gz output +- [ ] verify subcommand: check bundle integrity + manifest +- [ ] Progress display (files copied, DB size, elapsed) +- [ ] README with step-by-step migration walkthrough +- [ ] Cross-compile Makefile