4.5 KiB
Proxy Raye
Proxy Raye is an alternative front-end for adult websites. Watch videos on a clean UI without tracking and without annoying ads popping up from everywhere!
Currently supported platforms:
- XVideos
- XNXX
- PornHub (experimental)
- YouPorn
- RedTube
How to switch between platforms
Click on settings icon (gear icon on top-right corner). A pop-up menu will let you choose platform and orientation.
Working demos
Vercel hosted demo can be found here.
Self-hosted demo can be found here.
Roadmap
This is the list of features that will be implemented in the future:
- Search pagination
- Search filters
- Add support for bellesa.co
- Add support for ohentai.org
- Add support for iamsissy.com
- Video results API
- Favourite videos
- Embed videos
- Download videos
- Share link button for videos
Quickstart
You can run the project on local by cloning the repo.
IMPORTANT: encoding key generation:
Since version 0.4.0
server-side video streaming is supported and mandatory for some platforms (like PornHub) in order to work properly. In order to avoid random video url injection, urls get encrypted/decrypted by using an encoding key.
For security reasons it's better to generate a new encoding key. It can be done via console/terminal by running pwgen 20 1
command. Make sure pwgen
command is installed. This will generate an alphanumeric string.
Paste the string to ENCODING_KEY
environment variable inside docker-compose.yaml
if you are using Docker, or inside .env
file if you run the project with npm. See detailed instructions below.
In case variable is not set, a default encoding key will be used (not recommended!).
Docker
You can run project via Docker with docker-compose by opening root folder via console and running:
docker-compose up -d
And head browser to localhost:8069
.
Caching
Starting from version 0.3.0
caching is enabled by default inside docker-compose.yaml
.
A base Redis image will be added to the network.
However, Proxy Raye can still work without Redis by setting ENABLE_REDIS=false
under environment:
.
Encoding urls
Please uncomment ENCODING_KEY=
related line inside docker-compose.yaml
(under environment:
) and set value to the string obtained by running pwgen 20 1
.
Node.js
You can also run project outside Docker via npm (tested with NodeJS 20.11
and above).
You can run the project by opening root folder via console and running:
npm install
npm run build
npm run start
And head browser to localhost:3000
.
Encoding urls
Please rename .env.example
to .env
file inside root folder.
Please uncomment ENCODING_KEY=
related line inside .env
file and set value to the string obtained by running pwgen 20 1
.
(optional) Enable caching
If you want to enable caching, please rename .env.example
to .env
file inside root folder. Inside .env
file you will find following variables:
ENABLE_REDIS=true
REDIS_URL='redis://127.0.0.1:6379'
These values assume a basic Redis instance running on local machine. If your local setup is different, or your Redis instance is somewhere else, please change REDIS_URL
accordingly.
Modify
If you want to edit the project you can start development mode by opening root folder via console and running:
npm install
npm run dev
The project uses following tech stack:
- NextJS 14 (w/App router)
- Typescript
- Redux
- Pico CSS with Sass
- Next/Intl
It scrapes data server-side and return treated data to the frontend to be rendered.
Deploy
Vercel
You can deploy the app on Vercel by cloning this repo on your GitHub/Gitlab and making it private. Than create a new Vercel account and import it there. Vercel deploy doesn't need particular configuration.
Due to Vercel's serverless nature (which makes every request to XVideos and other platforms come from a different IP) it becomes very hard for web application firewalls to ban addresses effectively.
Self-host
You can self host the project on your local server via docker-compose and reverse-proxy exposed port to nginx.
Disabling platforms (both Vercel / Self-host)
For several reason you might want to disable some platforms. You can do it by adding DISABLED_PLATFORMS
environment variable.
List of platform values can be found in Platforms enum inside src/meta/settings.ts
Please add platforms list comma separated. Example:
DISABLED_PLATFORMS='pornhub, xnxx'