Brifing

Migrating from DigitalOcean to UpCloud

A developer's step-by-step journey to move personal projects off DigitalOcean.

Hacker News: Front Page2 min

1Ethical motivation for migration

The author decided to move away from DigitalOcean after discovering the company's $1M/year donation to a controversial foundation. This follows a similar decision to cancel 1Password over smaller donations. The migration represents a personal stance against funding certain ideologies through tech service subscriptions.

2Deployment tool architecture

Built a custom tool called Deploy that sits atop Docker and Railpack (Railway's open-source build system). The system handles automatic Git deployments, Postgres connection proxying, and manages multiple apps. All code lives in Git repositories, making redeployment easier when changing infrastructure providers.

3Data persistence strategy

Implemented a /data/name-of-app directory structure for persistent storage across deployments. Apps can maintain SQLite databases in these directories without needing separate Postgres instances. This simplified architecture reduces complexity for small projects while maintaining data portability during migrations.

4Infrastructure selection criteria

Chose UpCloud based on two primary factors: global server locations and cost efficiency. While initially willing to compromise on interface quality for price, found a balance with UpCloud that offered both reasonable pricing and functional infrastructure without chasing absolute cheapest options.

5Data migration challenges

Faced scattered data across multiple locations: Postgres backups on droplets, SQLite databases in various app directories, and DNS records spread across providers. Each data type required different migration approaches, with Postgres needing proper dump/restore while file-based data needed directory transfers.

6Incremental migration approach

Advocates moving one site at a time rather than attempting full migration simultaneously. This makes the process manageable by breaking it into discrete tasks. The author's weekend migration moved personal sites (atmoBB, pollen.place) and projects gradually using this philosophy.

7Current infrastructure setup

New architecture consists of one UpCloud machine for apps, separate object storage, and a small managed Postgres database. This intentionally trades high availability for simplicity, acknowledging it's suitable for personal projects but not enterprise applications.

8Community migration encouragement

The author suggests publicizing where developers move after leaving DigitalOcean as collective knowledge helps others transition. While not open-sourcing the custom Deploy tool due to maintenance concerns, shares the approach to inspire others to develop their own solutions.

Original article: Hacker News: Front Page — Migrating from DigitalOcean to UpCloud