# 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](https://proxyraye.vercel.app). Self-hosted demo can be found [here](https://proxyraye.copyriot.xyz). # 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' ```