Apparently, there is no endpoint in Pleroma-FE that we could use :( See also: https://github.com/kytta/share2fedi/issues/44
4.4 KiB
Instance-agnostic share page for the Fediverse.
Share₂Fedi (pronounced ‘share-to-fedi’) allows you to share stuff on Mastodon, Misskey, Friendica, and other federated social networks, instance-agnostic. Just type in the post text and the instance URL, and click ‘Post!’
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:
<a href="https://s2f.kytta.dev/?text=Hello%20world!&instance=mastodon.xyz">
Share on mastodon.xyz
</a>
The instance URL can be saved in your localStorage
to be automatically
appended if used later—handy!
Important
I know I provide a Share₂Fedi instance for others to use, but if you want to use Share₂Fedi for your share buttons, please consider self-hosting it. Although it's free now, running my instance may become too expensive for me in the future.
Hosting
Vercel, Netlify, Cloudflare Pages
Share₂Fedi was designed to run on Vercel, but you can also run it on Netlify or Cloudflare Pages. To deploy it yourself (it's free!), you can use the following buttons:
To deploy to Cloudflare Pages, fork the repo and follow the instructions.
Host it yourself
Self-hosting Share₂Fedi outside of Vercel requires some extra setup:
Prerequisites: modern Node.js (v16 or later), pnpm
. You can host with
Deno, but Node.js is still required.
-
Install dependencies.
pnpm install
-
Build.
pnpm build
If you want to use Deno, add the
--s2f-use-deno
flag:pnpm build --s2f-use-deno
-
Run server.
By default, this will only listen on localhost port 3000. To enable listening on a ceratin host and/or port, set the
HOST
andPORT
environment variables, respectively.node dist/server/entry.mjs
In production, you might want to use a process manager, like PM2:
# Start the app, restart on file changes (except node_modules) pm2 start dist/server/entry.mjs --name "Share2Fedi" --watch --ignore-watch="node_modules"
More information about self-hosting an Astro website with Node: https://docs.astro.build/en/guides/integrations-guide/node/#standalone
If you've built Share₂Fedi for Deno:
deno run --allow-net --allow-read --allow-env ./dist/server/entry.mjs
More information about self-hosting an Astro website with Deno: https://docs.astro.build/en/guides/integrations-guide/deno/#usage
-
Set up a reverse proxy.
Basically, you need to run a reverse proxy that would redirect all incoming requests to
localhost:3000
. Here's how to achieve this in various HTTP servers:- Apache
ProxyPass "/" "http://localhost:3000/"
- Nginx
location / { proxy_pass http://localhost:3000/; }
- Caddy
reverse_proxy :3000
Docker
If you really have to use Docker, there is a good guide on building Astro apps with Docker. I will not provide support for Docker-based deployments in the observable future.
See also
📯 Shareon (lightweight, stylish, and ethical share buttons) uses Share₂Fedi under the hood!
Licence
© 2020–2023 Nikita Karamov
Licensed under the GNU Affero General Public License v3.0 or later.
This project is hosted on GitHub: https://github.com/kytta/share2fedi.git