Better explain deployment and customization

This commit is contained in:
Marcel Hellkamp 2023-08-04 13:42:17 +02:00
parent deb3b75999
commit c424d29d5d

View File

@ -2,21 +2,18 @@
Fediwall is a *media wall* application made for [Mastodon](https://joinmastodon.org/). Follow hashtags or accounts and show the most recent posts in a self-updating, screen filling and visually pleasing masonry grid layout. Put it on a large screen and showcase community feedback or social media reactions while hosting your next big event, or use it to look at cat pictures all day. Your choice.
**Try it!** Check out [fediwall.social](https://fediwall.social/) or host your own (see below).
## Features
* **Follow hashtags or accounts** on multiple servers and display all public posts (including boosts) matching your interest.
* **Follow hashtags, accounts or trends** on multiple servers and display all public posts (including boosts) matching your interest.
* **Visually pleasing** and screen filling masonry grid layout that scales well with all types of screens, from tablet to large screens or LED walls at venues.
* **Dark mode** for less eye stain and lower energy consumption.
* **Find new posts** quickly and watch them appear with a smooth animation. The update logic gracefully handles Mastodon server rate limits.
* **Moderation tools** allow you to pin important posts, hide inappropriate posts or block entire accounts if necessary.
* **Configure** everything to your liking without the need to host your own instance. Settings are stored in the URL, so you can bookmark or share your personalized wall with others.
* **Self-host** your own if you like. Fediwall is compiled to a static website with no server side logic. Just put it on a webserver and you are done.
## Try it out
There is a [public demo site](https://defnull.github.io/fediwall/) you can start playing with.
* **Customize** everything to your liking without the need to host your own instance. Settings are stored in the URL, so you can bookmark or share your personalized wall with others.
* **Self-host** your own if you want. Fediwall is compiled to a static website with no server side logic. Just put it on a webserver and you are done.
## Screenshot (dark/light theme)
@ -24,21 +21,50 @@ There is a [public demo site](https://defnull.github.io/fediwall/) you can start
![screenshot](https://github.com/defnull/fediwall/assets/62740/d838dfa7-b200-42f5-8130-9506da7dba0f)
## How to build and host your own
## Customization
Checkout this repository, run `npm install` once, then `npm run build` and copy the content of the `./dist/` folder to a web server of your choice. If you want to run Fediwall under a certain path instead of the web server root, specify the `--base` build option and all paths will be rewritten accordingly (e.g. `npm run build -- --base=/wall/` to serve it as `https://example.com/wall/`).
To customize a Fediwall, scroll down and look for the `[customize]` link. Change the settings to your liking and click apply. The dialog will redirect you to a new URL that represents all your changes and can be bookmarked or shared with others.
## Configuration
### Changing the defaults (self-host only)
If you deploy Fediwall yourself, you can either change default settings in `./src/defaults.ts`, or upload a custom `wall-config.json` file to the Fediwall folder on your webserver. Fediwall will check for that file during initialization and use it as its default configuration.
Any parameter that is not defined in the URL will fall back to a sensible default value. If you host your own Fediwall, you can of cause change those defaults:
All config values can also be defined or changed via URL query parameters. The easiest way to generate a custom URL is to use the built-in config editor. Go to the Fediwall instance you want to use, scroll down, click `[configure]` and change everything to your liking, then hit `Apply`. Bookmark or share the new URL.
* Generate a `wall-config.json` (see "Advanced" tab in the config editor) and upload it to the Fediwall folder on your webserver (next to `index.html`). Fediwall will try to download this file and use it as default configuration, if present.
* If you plan to build Fediwall from source, you can also change the values in `./src/defaults.ts` directly. Placing a custom `wall-config.json` in the `./public/` folder is easier in most cases, though.
## Development
### External configuration
Checkout this repository, run `npm install` once, then `npm run dev` and start coding.
You can link to an externally hosted `wall-config.json` via a special `?load=URL` query parameter. If present, Fediwall will no longer try to download a local `wall-config.json`, but instead fetch default configuration from the specified URL. This is very handy if you want to share Fediwall links but keep the option to change settings later (e.g. to add more hashtags).
Make sure the external webspace allows fetching resources via JavaScript from a different domain (requires proper [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) headers). Github hosted [Gists](https://gist.github.com/) are known to work. For example: `https://fediwall.social/?load=//gist.github.com/[USER]/[GIST]/raw/[FILENAME]`
## Self-hosting Fediwall
Fediwall is compiled into a static website and does not require any server-side framework or runtime to work. Just download a recent build from the [Releases](https://github.com/defnull/fediwall/releases) page (or build from source, see below) and upload the files to a public webspace.
You can host Fediwall directly under a dedicated domain (e.g. `wall.example.com`) or next to an existing application from a separate folder (e.g. `example.com/wall/`). To host Fediwall next to Mastodon on an existing server, find your [nginx config](https://github.com/mastodon/mastodon/blob/main/dist/nginx.conf) and add a new `location` block:
```nginx
server {
[...]
location /wall/ {
alias /path/to/your/fediwall/files/
}
}
```
## Build from source
You need at least [Node 18](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) and `npm` to build this project.
Checkout or download this repository, run `npm install` once, then `npm run build` to compile everything into a static website. The `./dist/` folder can then be uploaded to a webserver.
During development, `npm run dev` will provide a local development server that automatically compiles and reloads everything on code changes.
## F.A.Q.
@ -56,12 +82,12 @@ This can have multiple reasons:
Fediwall currently relies on a small subset of the Mastodon v1 API to fetch content, which is also implemented by many Mastodon alternatives. Support for other source APIs (e.g. Pixelfed) is planned, but this may take a while. Pull requests are welcomed, though!
Direct API access is not always necessary. Federated content shows up on Fediwall no matter on which server or platform they were originally posted.
Direct API access is not always necessary. Content shows up on Fediwall no matter on which server or platform it was originally published, as long as it is federated with one of the backing Mastodon servers.
### I want to use Fediwall for my next big event. How do I prevent spam or inappropriate content?
Choose a server with active moderation to reduce the risk of troll-, spam-, or nsfw-posts showing up. If you see something you do not want, you can manually hide individual posts or entire account in the UI.
Choose a source server with active moderation to reduce the risk of troll-, spam-, or nsfw-posts showing up. If you see something you do not want, you can manually hide individual posts or entire account in the UI.
To play it save, stop following hashtags and follow a bunch of trusted event accounts instead. Those accounts would then manually boost posts and only allow approved content to show up on the wall.