2021-01-30 08:25:48 -05:00
|
|
|
|
<h1 align="center"><img src="assets/logo.svg" width="128" height="128" alt="toot"></h1>
|
2020-09-23 10:08:21 -04:00
|
|
|
|
|
2021-01-30 09:12:32 -05:00
|
|
|
|
> Cross-instance share page for Mastodon
|
2020-09-23 12:39:38 -04:00
|
|
|
|
|
2022-02-12 06:30:49 -05:00
|
|
|
|
[toot] allows you to share stuff on Mastodon, cross-instance. Just put in your
|
|
|
|
|
post text and the instance URL and click ‘Toot!’
|
2021-01-30 09:12:32 -05:00
|
|
|
|
|
2022-02-12 06:30:49 -05:00
|
|
|
|
And if you open this page with `text` URL parameter, it will be auto-inserted
|
|
|
|
|
in the text field. The same goes for the `instance` URL parameter. This can be
|
|
|
|
|
used to build custom share buttons for Mastodon:
|
2020-09-23 12:39:38 -04:00
|
|
|
|
|
|
|
|
|
```html
|
2022-03-18 07:41:00 -04:00
|
|
|
|
<a href="https://toot.kytta.dev/?text=Hello%20world!&instance=https%3A%2F%2Fmastodon.xyz">
|
2021-05-13 08:24:32 -04:00
|
|
|
|
Share on Mastodon
|
2020-09-23 12:39:38 -04:00
|
|
|
|
</a>
|
|
|
|
|
```
|
|
|
|
|
|
2022-02-12 06:30:49 -05:00
|
|
|
|
The instance URL can be saved in your `localStorage` to be automatically
|
|
|
|
|
appended later — handy!
|
2021-01-30 09:12:32 -05:00
|
|
|
|
|
2021-08-28 10:03:58 -04:00
|
|
|
|
## Hosting
|
|
|
|
|
|
|
|
|
|
### One-click Vercel deploy
|
|
|
|
|
|
|
|
|
|
For now, toot is a tad bit vendor-locked to run on
|
|
|
|
|
[Vercel](https://vercel.com/). To deploy it yourself, you can use the following
|
|
|
|
|
button:
|
|
|
|
|
|
2022-02-02 09:32:36 -05:00
|
|
|
|
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fkytta%2Ftoot)
|
2021-08-28 10:03:58 -04:00
|
|
|
|
|
|
|
|
|
### Host it yourself
|
|
|
|
|
|
|
|
|
|
Self-hosting toot outside of Vercel requires some extra setup:
|
|
|
|
|
|
2021-11-04 13:20:24 -04:00
|
|
|
|
1. Make sure you have got Node.js v12 or later as well as pnpm installed
|
2021-08-28 10:03:58 -04:00
|
|
|
|
|
|
|
|
|
2. Build the static part of toot:
|
|
|
|
|
|
|
|
|
|
```sh
|
2021-11-04 13:20:24 -04:00
|
|
|
|
pnpm install # to install dependencies
|
|
|
|
|
pnpm run build # to build the website
|
2021-08-28 10:03:58 -04:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. Run the backend server for the form:
|
|
|
|
|
|
2022-03-18 07:16:21 -04:00
|
|
|
|
```sh
|
|
|
|
|
node api/toot.js
|
|
|
|
|
```
|
2022-03-18 07:39:31 -04:00
|
|
|
|
|
2022-03-18 07:16:21 -04:00
|
|
|
|
or if you want to run the process in the background:
|
|
|
|
|
|
2021-08-28 10:03:58 -04:00
|
|
|
|
```sh
|
2022-03-17 08:58:41 -04:00
|
|
|
|
pm2 start api/toot.js --watch --ignore-watch="node_modules"
|
2021-08-28 10:03:58 -04:00
|
|
|
|
```
|
2022-03-17 09:04:44 -04:00
|
|
|
|
|
2022-03-17 08:58:41 -04:00
|
|
|
|
> You can find a summary for pm2 at: https://pm2.keymetrics.io/docs/usage/quick-start/
|
|
|
|
|
|
|
|
|
|
4. Set up webserver
|
2022-03-17 09:04:44 -04:00
|
|
|
|
|
2022-03-17 08:58:41 -04:00
|
|
|
|
1. Apache
|
2022-03-17 09:04:44 -04:00
|
|
|
|
|
2022-03-18 07:17:16 -04:00
|
|
|
|
```apacheconf
|
2022-03-17 09:09:30 -04:00
|
|
|
|
DocumentRoot "path_to_toot/public"
|
|
|
|
|
|
|
|
|
|
ProxyPass "/api/toot" "http://localhost:8000/"
|
2022-03-17 09:04:44 -04:00
|
|
|
|
```
|
2022-03-17 08:58:41 -04:00
|
|
|
|
|
|
|
|
|
2. Nginx
|
|
|
|
|
|
2022-03-18 07:17:16 -04:00
|
|
|
|
```nginxconf
|
2022-03-17 09:09:30 -04:00
|
|
|
|
root path_to_toot/public;
|
2022-03-17 09:04:44 -04:00
|
|
|
|
index.html;
|
|
|
|
|
|
|
|
|
|
location /api/toot {
|
|
|
|
|
proxy_pass http://localhost:8000/;
|
|
|
|
|
}
|
|
|
|
|
```
|
2021-08-28 10:03:58 -04:00
|
|
|
|
|
2022-03-18 08:04:56 -04:00
|
|
|
|
3. Caddy
|
|
|
|
|
|
2022-05-17 09:30:54 -04:00
|
|
|
|
```caddy
|
2022-03-18 08:04:56 -04:00
|
|
|
|
root * path_to_toot/public;
|
|
|
|
|
try_files index.html
|
|
|
|
|
|
|
|
|
|
handle_path /api/toot {
|
|
|
|
|
reverse_proxy localhost:8000
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
2021-01-30 09:12:32 -05:00
|
|
|
|
## See also
|
|
|
|
|
|
2022-02-12 06:30:49 -05:00
|
|
|
|
**[📯 Shareon](https://shareon.js.org)**
|
2022-03-17 09:04:44 -04:00
|
|
|
|
(lightweight, stylish, and ethical share buttons) uses [toot] under the hood!
|
2020-09-23 13:59:55 -04:00
|
|
|
|
|
2021-05-13 08:24:32 -04:00
|
|
|
|
## Licence
|
2020-09-23 13:59:55 -04:00
|
|
|
|
|
2022-02-12 06:30:49 -05:00
|
|
|
|
Copyright © 2020–2022 [Nikita Karamov](https://www.kytta.dev/)
|
|
|
|
|
Licenced under the [GNU Affero General Public License, version 3](https://spdx.org/licenses/AGPL-3.0-only.html)
|
2020-09-23 13:59:55 -04:00
|
|
|
|
|
2021-05-13 08:24:32 -04:00
|
|
|
|
The ‘toot’ logo is based on Mastodon’s ‘Simple’ logo, licensed under [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.html).
|
2021-01-29 18:48:40 -05:00
|
|
|
|
|
2021-05-13 08:24:32 -04:00
|
|
|
|
The repo banner includes Mastodon’s ‘Full’ logo, licensed under [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.html).
|
2020-09-23 12:39:38 -04:00
|
|
|
|
|
2022-03-17 09:04:44 -04:00
|
|
|
|
---
|
2021-08-29 08:10:23 -04:00
|
|
|
|
|
2022-02-12 06:30:49 -05:00
|
|
|
|
This project is hosted on Codeberg: <https://codeberg.org/kytta/toot>
|
2021-08-29 08:10:23 -04:00
|
|
|
|
|
2022-02-12 06:30:49 -05:00
|
|
|
|
[toot]: https://toot.kytta.dev/
|