# tgbot-mastodon-sync
[](https://github.com/SpriteOvO/tgbot-mastodon-sync)
[](https://crates.io/crates/tgbot-mastodon-sync)
[](https://github.com/SpriteOvO/tgbot-mastodon-sync/actions/workflows/CI.yml)
A Telegram bot synchronizes Telegram messages to Mastodon.
Official hosted account: [@mastodon_sync_bot](https://t.me/mastodon_sync_bot)
## Self-Host
### 1. Install binary
You have two ways to install the binary.
- Install from [crates.io](https://crates.io/) registry.
```bash
cargo install tgbot-mastodon-sync
```
- Install from git repository.
```bash
git clone https://github.com/SpriteOvO/tgbot-mastodon-sync.git
cd tgbot-mastodon-sync
git checkout <latest-version>
cargo install --path .
```
Both ways are build from source.
### 2. Configure database
This project uses `sqlite` as the database engine.
Choose a file path for the database, its URL will be:
```
sqlite:absolute/path/to/database.sqlite
```
You may want to add `?mode=rwc` to the end of the URL, which will make the bot automatically create the database file if it doesn't exist.
```
sqlite:absolute/path/to/database.sqlite?mode=rwc
```
Tables will be created / migrated automatically by the bot at startup.
### 3. Start the bot
Configure environment variables:
- `TGBOT_MASTODON_SYNC_BOT_TOKEN`
- `TGBOT_MASTODON_SYNC_DATABASE_URL`
Run `tgbot-mastodon-sync`.
## Note
- The bot requires [privacy mode](https://core.telegram.org/bots/features#privacy-mode) to be turned off, because media groups need to be cached in advance.
- The database and memory may contain secret data, so pay attention to security.
## License
This project is licensed under [GNU AGPL-3.0 License](/LICENSE).