2022-11-14 07:34:13 -05:00
|
|
|
|
<h1 align="center"><img src="assets/share2fedi.svg" width="520" height="160" alt="Share2Fedi"></h1>
|
2020-09-23 09:08:21 -05:00
|
|
|
|
|
2022-11-14 07:34:13 -05:00
|
|
|
|
> Instance-agnostic share page for the Fediverse.
|
2020-09-23 11:39:38 -05:00
|
|
|
|
|
2023-03-17 08:06:30 -05:00
|
|
|
|
**[Share₂Fedi]** allows you to share stuff on Mastodon, GoToSocial, Pleroma, and
|
|
|
|
|
other federated social networks, instance-agnostic. Just type in the post text
|
|
|
|
|
and the instance URL, and click ‘Post!’
|
2021-01-30 09:12:32 -05:00
|
|
|
|
|
2023-03-17 08:06:30 -05:00
|
|
|
|
Or, open this page with the prefilled `text` URL parameter—it will be
|
|
|
|
|
automatically inserted into the text field. The same goes for the `instance` URL
|
|
|
|
|
parameter. This can be used to build custom share buttons for the federated
|
|
|
|
|
social networks:
|
2020-09-23 11:39:38 -05:00
|
|
|
|
|
|
|
|
|
```html
|
2023-03-16 06:21:26 -05:00
|
|
|
|
<a
|
|
|
|
|
href="https://s2f.kytta.dev/?text=Hello%20world!&instance=https%3A%2F%2Fmastodon.xyz"
|
|
|
|
|
>
|
2022-11-14 07:39:51 -05:00
|
|
|
|
Share on mastodon.xyz
|
2020-09-23 11:39:38 -05:00
|
|
|
|
</a>
|
|
|
|
|
```
|
|
|
|
|
|
2023-03-17 08:06:30 -05:00
|
|
|
|
The instance URL can be saved in your `localStorage` to be automatically
|
|
|
|
|
appended if used later—handy!
|
2021-01-30 09:12:32 -05:00
|
|
|
|
|
2021-08-28 09:03:58 -05:00
|
|
|
|
## Hosting
|
|
|
|
|
|
|
|
|
|
### One-click Vercel deploy
|
|
|
|
|
|
2023-03-17 08:06:30 -05:00
|
|
|
|
**Share₂Fedi** is designed to run on [Vercel](https://vercel.com/). To deploy it
|
|
|
|
|
yourself (it's free!), you can use the following button:
|
2021-08-28 09:03:58 -05:00
|
|
|
|
|
2023-03-16 09:20:56 -05:00
|
|
|
|
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fkytta%2Fshare2fedi)
|
2021-08-28 09:03:58 -05:00
|
|
|
|
|
|
|
|
|
### Host it yourself
|
|
|
|
|
|
2022-11-14 07:39:51 -05:00
|
|
|
|
Self-hosting **Share₂Fedi** outside of Vercel requires some extra setup:
|
2021-08-28 09:03:58 -05:00
|
|
|
|
|
2023-03-16 09:21:16 -05:00
|
|
|
|
**Prerequisites:** modern Node.js (v16 or later), `pnpm`.
|
2021-08-28 09:03:58 -05:00
|
|
|
|
|
2023-03-16 09:21:16 -05:00
|
|
|
|
1. Install the dependencies:
|
2021-08-28 09:03:58 -05:00
|
|
|
|
|
|
|
|
|
```sh
|
2023-03-16 09:21:16 -05:00
|
|
|
|
pnpm install
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. Build the static files:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
pnpm build
|
2021-08-28 09:03:58 -05:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. Run the backend server for the form:
|
|
|
|
|
|
2022-03-18 06:16:21 -05:00
|
|
|
|
```sh
|
2023-03-16 09:21:16 -05:00
|
|
|
|
node api/share.js
|
2022-03-18 06:16:21 -05:00
|
|
|
|
```
|
2022-03-18 06:39:31 -05:00
|
|
|
|
|
2023-03-16 09:21:16 -05:00
|
|
|
|
alternatively, if you want to run the process in the background:
|
2022-03-18 06:16:21 -05:00
|
|
|
|
|
2021-08-28 09:03:58 -05:00
|
|
|
|
```sh
|
2023-03-16 09:21:16 -05:00
|
|
|
|
pm2 start api/share.js --watch --ignore-watch="node_modules"
|
2021-08-28 09:03:58 -05:00
|
|
|
|
```
|
2022-03-17 08:04:44 -05:00
|
|
|
|
|
2023-03-17 08:06:30 -05:00
|
|
|
|
> You can find a summary for pm2 at:
|
|
|
|
|
> https://pm2.keymetrics.io/docs/usage/quick-start/
|
2022-03-17 07:58:41 -05:00
|
|
|
|
|
2023-03-16 09:21:16 -05:00
|
|
|
|
4. Set up a web server
|
|
|
|
|
|
2023-03-17 08:06:30 -05:00
|
|
|
|
Basically, you need to run a server that would proxy the requests to
|
|
|
|
|
`/api/share`. to the Node.js server you started. Here's how to achieve this
|
|
|
|
|
in various HTTP servers:
|
2022-03-17 08:04:44 -05:00
|
|
|
|
|
2022-03-17 07:58:41 -05:00
|
|
|
|
1. Apache
|
2022-03-17 08:04:44 -05:00
|
|
|
|
|
2022-03-18 06:17:16 -05:00
|
|
|
|
```apacheconf
|
2023-03-16 09:21:16 -05:00
|
|
|
|
DocumentRoot "<PATH_TO_SHARE2FEDI>/dist"
|
2022-03-17 08:09:30 -05:00
|
|
|
|
|
2023-03-16 09:21:16 -05:00
|
|
|
|
ProxyPass "/api/share" "http://localhost:8080/"
|
2022-03-17 08:04:44 -05:00
|
|
|
|
```
|
2022-03-17 07:58:41 -05:00
|
|
|
|
|
|
|
|
|
2. Nginx
|
|
|
|
|
|
2022-03-18 06:17:16 -05:00
|
|
|
|
```nginxconf
|
2023-03-16 09:21:16 -05:00
|
|
|
|
root <PATH_TO_SHARE2FEDI>/dist;
|
2022-03-17 08:04:44 -05:00
|
|
|
|
index.html;
|
|
|
|
|
|
2023-03-16 09:21:16 -05:00
|
|
|
|
location /api/share {
|
|
|
|
|
proxy_pass http://localhost:8080/;
|
2022-03-17 08:04:44 -05:00
|
|
|
|
}
|
|
|
|
|
```
|
2021-08-28 09:03:58 -05:00
|
|
|
|
|
2022-03-18 07:04:56 -05:00
|
|
|
|
3. Caddy
|
|
|
|
|
|
2022-05-17 08:30:54 -05:00
|
|
|
|
```caddy
|
2023-03-16 09:21:16 -05:00
|
|
|
|
root * <PATH_TO_SHARE2FEDI>/dist;
|
2022-03-18 07:04:56 -05:00
|
|
|
|
try_files index.html
|
|
|
|
|
|
2023-03-16 09:21:16 -05:00
|
|
|
|
handle_path /api/share {
|
|
|
|
|
reverse_proxy localhost:8080
|
2022-03-18 07:04:56 -05:00
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
2021-01-30 09:12:32 -05:00
|
|
|
|
## See also
|
|
|
|
|
|
2023-03-17 08:06:30 -05:00
|
|
|
|
**[📯 Shareon](https://shareon.js.org)** (lightweight, stylish, and ethical
|
|
|
|
|
share buttons) uses **Share₂Fedi** under the hood!
|
2020-09-23 12:59:55 -05:00
|
|
|
|
|
2021-05-13 07:24:32 -05:00
|
|
|
|
## Licence
|
2020-09-23 12:59:55 -05:00
|
|
|
|
|
2022-11-14 07:39:51 -05:00
|
|
|
|
© 2020–2022 [Nikita Karamov]\
|
|
|
|
|
Licensed under the [GNU Affero General Public License, version 3][AGPL-3.0].
|
2020-09-23 12:59:55 -05:00
|
|
|
|
|
2022-03-17 08:04:44 -05:00
|
|
|
|
---
|
2021-08-29 07:10:23 -05:00
|
|
|
|
|
2023-03-16 04:41:55 -05:00
|
|
|
|
This project is hosted on GitHub: <https://github.com/kytta/share2fedi.git>
|
2021-08-29 07:10:23 -05:00
|
|
|
|
|
2022-11-14 07:39:51 -05:00
|
|
|
|
[AGPL-3.0]: https://spdx.org/licenses/AGPL-3.0-only.html
|
|
|
|
|
[Nikita Karamov]: https://www.kytta.dev
|
|
|
|
|
[Share₂Fedi]: https://s2f.kytta.dev/
|