MILO / SELF-HOSTING
Your server. Your little corner.
Run Milo on infrastructure you choose. The same messenger, with the home for your data in your hands.
What you will run
The repository provides a Bun / Hono API, PostgreSQL, Redis, private attachment storage, and a separate SvelteKit administration interface. The native Flutter client connects to your API over HTTPS.
Start with the repository
The source repository is currently private; self-hosting requires repository access. Public app downloads do not require a GitHub account. From a checkout of the Milo monorepo, copy the example environment file and fill in your own credentials. The commands below are a local setup starting point. Follow docs/deployment.md for permissions, TLS, signing, backup, and production requirements.
umask 077
cp .env.example .env
# Fill in .env with your own configuration.
docker compose up --build -dBuild the native client
Install the pinned Flutter and Rust toolchains described in the root README. From apps/client, connect a local development build to your running API. The local Compose stack is exposed at http://127.0.0.1:8080 (http://10.0.2.2:8080 from Android emulators); for production builds use HTTPS. A new device still needs approval.
flutter pub get --enforce-lockfile
flutter run --dart-define=MILO_API_URL=https://your-server.exampleAndroid and Windows releases are listed on the homepage when available. iOS and macOS public distribution still requires additional signing setup.
Before a production deployment
- Configure your own database, Redis, storage, and administrator seal key.
- Terminate HTTPS/WSS at your reverse proxy; keep attachments outside the public web root.
- Bootstrap an administrator and enable MFA. Plan encrypted backups and a restore drill.
- Review docs/deployment.md and docs/implementation-status.md. Production validation and an independent security review remain outstanding.