/Nebula

Nebula Web is a stunning and sleek web proxy with support for hundreds of popular sites.

Primary LanguageHTMLGNU Affero General Public License v3.0AGPL-3.0

Nebula

NebulaWeb is an official flagship of Nebula Services and Nebula Developer Labs. NebulaWeb is a stunning, sleek, and functional web-proxy with support for thousands of popular sites. With NebulaWeb, the sky is the limit.

license

chat

Features

  • Stunning and highly functional UI with multiple themes
  • XOR/b64 encoding all traffic
  • Hides your IP from sites
  • List of officially supported sites
  • limited mobile support
  • Stealth Mode (buffed about:blank cloaking)
  • NEW Clickoff cloaking
  • NEW Email OTP verification

Deployment

Table of contents

  • Quick & easy deployment
  • Deployment configuration explaination
  • how to use email OTP Verification mode
  • Advanced Deployment
  • Filesystem

Quick & Easy Deployment Options

Deploy to Heroku
Run on Replit
Remix on Glitch
Deploy to IBM Cloud
Deploy to Amplify Console
Run on Google Cloud
Deploy on Railway
Deploy To Koyeb


Deployment Configuration Guide

(Example configuration with none-json notes)

{ 
  "verification": false, // disabled by default 
  "api_key":" Your sendgrid API key used to access your account from the API to send emails",
  "sendFromEmail":"The email that will send the one time password (MUST BE VERIFIED IN SENDGRID)",
  "type": "code", // DO NOT TOUCH
  "email": " The email you want to use for recieving OTP "
}

Email Verification OTP

What is this?

Email verification is a new and unique feature that we've implemented in the event that someone wants to keep their deployment of Nebula private and secure.

What does it do

When a user tries to access the website, before allowed access they will be asked for a One time password sent to an email set in the deployment configuration. Once verified, they will have 15 day access to the site.

  • Firstly, We need to enable verification within the deployment configuration
    • change "verification":false, to "verification":true,
    • Note: You have to reboot the node app for any changes to take place.
  • Now, we need to use an api to send a message
    • Make an account at Sendgrid (https://app.sendgrid.com/)
    • Note: It is likely that other versions of Nebula will use a different package to send emails.
  • Verify the email you want to recieve emails from (Create a sender identity)
    • Go to settings -> Sender authentication and click Verify a Single Sender
  • Now, We need to get the API key to connect to the API
    • Go to settings -> API Keys -> and make an API key.
  • Complete the information in the deployment config deployment.config.json such as:

Advanced Deployment

Initial configuration

credits to @ProgrammerIn-wonderland for writing this wonderful tutorial (which can also be found in the docs :)

  • Create an account at https://www.cloudflare.com/
  • Create an account at https://www.freenom.com/ (or any registrars)
  • Find a free domain name at Freenom
  • Click checkout
    • Select (12 Months @ FREE)
    • Select "Use DNS"
      • Select Use your own DNS
  • Go to cloudflare, click add new site, and enter the free domain name
  • Select "Free Plan"
  • Click continue, ignore DNS
    • Copy the name servers cloudflare gives you
  • Go back to your Freenom tab, enter in the name servers which cloudflare gave you
    • You can keep IP blank
  • Click continue
  • Click complete order
  • Go back to cloudflare tab, click "Check Nameservers"
  • Select DNS on your right bar
  • Enter in the IP of the server which will be hosting Nebula
    • Target will be @
  • Click Enable proxy (little gray cloud icon, if active its orange)
  • Select SSL/TLS in your right bar
  • Click "Flexible"

Server configuration

  • SSH into the server you'll be using, I'll assume its running Ubuntu 22.04 (though the commands are the same for debian 10+ versions, and Ubuntu versions 20.04+)
  • run
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - \ &&
sudo apt-get install -y nodejs npm
git clone https://github.com/NebulaServices/Nebula.git
cd Nebula
npm i
npm ci
sudo nohup PORT=80 node . &

Make sure your firewall is configured to let through port 80 traffic!
Note: Server will need to run cd Nebula && sudo nohup PORT=80 node . & on reboot

File Structure

File Purpose
static/index.html The main frontend visuals for NebulaWEB.
static/unv.html The verification-required frontend/visuals.
static/options/ The frontend for Nebula's options, settings, and preferences.
static/resources/v.js Client verification system for the OTP system.
static/resources/nebulamain.js All of the DOM/client code for NebulaWEB. Includes options, themeSystem, cloak, stealthengine, and more.
app.js The backend server for Nebula. Contains Nodestatic, Bare, HTTP, and more.

Tech Stack

  • HTML, JS, CSS
  • Partical.JS (Specifically v4, 5, 6.1 &< only)
  • UV Backend Proxy
  • Osana Backend Proxy
  • TompHTTP Bare Server
  • node HTTP (No ExpressJS!)

Support

For support, email chloe@nebula.bio or join our discord: discord.gg/unblocker

Demo

Click here to see a demo of Nebula

Acknowledgements

License

(Nebula's license is now GNU AGPL V3 as of v7.10) Copyright Nebula Services 2021 - Present
This project uses the AGLP GNU V3 license.