Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cofob/fastside
A smart redirecting gateway for various frontend services. Faster alternative to farside.
https://github.com/cofob/fastside
privacy redirect rust
Last synced: 11 days ago
JSON representation
A smart redirecting gateway for various frontend services. Faster alternative to farside.
- Host: GitHub
- URL: https://github.com/cofob/fastside
- Owner: cofob
- License: gpl-3.0
- Created: 2024-05-14T06:24:09.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2024-10-24T16:16:38.000Z (15 days ago)
- Last Synced: 2024-10-24T17:40:27.232Z (15 days ago)
- Topics: privacy, redirect, rust
- Language: Rust
- Homepage: https://fastsi.de/
- Size: 2.34 MB
- Stars: 13
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# fastside
A smart redirecting gateway for various frontend services. Faster and compatible
alternative to farside.Contents
- [fastside](#fastside)
- [About](#about)
- [Features](#features)
- [Demo](#demo)
- [Mirrors](#mirrors)
- [How It Works](#how-it-works)
- [Self-Hosting](#self-hosting)
- [Compiling from Source](#compiling-from-source)
- [Why does this fork exist?](#why-does-this-fork-exist)
- [Migration from farside](#migration-from-farside)
- [Tips and tricks](#tips-and-tricks)
- [Use fastside to upload files to 0x0](#use-fastside-to-upload-files-to-0x0)## About
A redirecting service for FOSS alternative frontends.
[Fastside](https://fastsi.de/) provides links that automatically redirect to
working instances of privacy-oriented alternative frontends, such as Nitter,
Libreddit, etc. This allows for users to have more reliable access to the
available public instances for a particular service, while also helping to
distribute traffic more evenly across all instances and avoid performance
bottlenecks and rate-limiting.## Features
- [x] Support for hidden networks (tor, i2p, etc).
- [x] Redirect behaviour can be configured. (for example - you can exclude cloudflare)
- [x] User-preferred instances.
- [x] POST redirects.
- [x] Regex redirects via `/{url}` routes.
- [x] Anonymous and cached redirects via `/@cached/#{path}` routes.
- [x] History redirects via `/_/{path}` routes.
- [x] Fallback redirects.
- [x] Automatic update of services list.
- [x] API.## Demo
Fastside's links work with the following structure: `fastsi.de//`
For example:
Service
Page
Fastside Link
Libreddit
/r/popular
https://fastsi.de/libreddit/r/popular
Teddit
/r/popular
https://fastsi.de/teddit/r/popular
Invidious
/watch?v=zLGDE2j_n5c
https://fastsi.de/_/invidious/watch?v=zLGDE2j_n5c
Invidious
https://www.youtube.com/watch?v=zLGDE2j_n5c
https://fastsi.de/https://www.youtube.com/watch?v=zLGDE2j_n5c
AnonymousOverflow
/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags
https://fastsi.de/@cached/anonymousoverflow/#questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags
Note: This table doesn't include all available services. For a complete list of supported frontends, see: https://fastsi.de/
## Mirrors
Fastside can be opened in [clearnet](https://fastsi.de/), [clearnet cloudflare](https://cdn.fastside.link/), [tor](http://a7xvcthrhfcsox73brt5hgueapwosohmieg5wttvuuuz6mqur5s3rqyd.onion/), [i2p](http://fastside.i2p/) ([b32](http://i4autaipx7a4ro34cbwvni6bcph34eueocplwsxaqeeuyb6cavzq.b32.i2p)), [yggdrasil](http://ygg.fastside.link/) ([Alfis](http://fastside.ygg/), [IPv6](http://[200:691d:578e:f10e:e935:f189:aab4:1d98]/)).
## How It Works
The app runs with an internally scheduled cron task that queries all instances
for services defined in [services.json](./services.json) every 5 minutes. For
each instance, as long as the instance takes <5 seconds to respond and returns
a successful response code, the instance is added to a list of available
instances for that particular service. If not, it is discarded until the next
update period.Fastside's routing is minimal, similar to [Farside](https://github.com/benbusby/farside), but includes
an additional `/@cached/#` endpoint, which utilizes browser caching to achieve instant
redirects without waiting for server responses.## Self-Hosting
Setting up Fastside on your server is straightforward with Docker. Simply execute the following command:
```bash
docker run --restart unless-stopped --name fastside -d -p 8080:8080 ghcr.io/cofob/fastside
```This will deploy Fastside, making it accessible on port 8080 of your server. The service will automatically use the default [services.json](https://raw.githubusercontent.com/cofob/fastside/master/services.json) as its configuration source.
## Compiling from Source
If you prefer to compile Fastside from source, ensure you have Rust's package manager, Cargo, installed. Then, navigate to the repository and run the following command:
```bash
cargo build --release
```The compiled executables will be located in the `target/release` directory.
## Why does this fork exist?
[Farside](https://github.com/benbusby/farside) operates very slowly for some reason. The ping from my machine to
their server in the USA is 300 ms, and a redirect request takes about 1 second to process (!). This means that
processing a redirect takes 700 ms, which is incredibly long for such a simple task. On the other hand, Fastside
processes requests in 200-300 ms (taking my internet into account). Additionally, the web server at fastside.link
supports http3, which saves us an additional 100-150 ms.### Migration from farside
Migrating from farside to fastside is very simple - just replace the redirects from `farside.link` to `fastside.link`.
## Tips and tricks
### Use fastside to upload files to 0x0
```bash
curl -LF'[email protected]' fastsi.de/0x0
```