mirror of
https://github.com/NebulaServices/Nebula.git
synced 2025-05-12 11:30:01 -04:00
a stunning and sleek web proxy with support for hundreds of popular sites.
https://docs.nebulaproxy.io/
.vscode | ||
database_assets | ||
public | ||
server | ||
src | ||
.dockerignore | ||
.gitignore | ||
astro.config.ts | ||
biome.json | ||
config.example.toml | ||
docker-compose.build.yml | ||
docker-compose.yml | ||
Dockerfile | ||
package.json | ||
pnpm-lock.yaml | ||
README.md | ||
svelte.config.js | ||
tailwind.config.mjs | ||
tsconfig.json |
NOTE:
- This will NOT deploy on Github Pages, Netlify, Vercel, Gitlab Pages or any other static host
- This will NOT work on Render
How to get links
Features
- Multiple Proxy "Backends":
Contributors
- Rifting - Owner & Maintainer
- MotorTruck1221 - Maintainer
Tech Stack
- Astro
- Fastify
- Ultraviolet
- RammerHead
- Epoxy
- Libcurl.js
- HTML, CSS, and JavaScript (DUH)
Catalog/Marketplace
- By default the marketplace is enabled, and uses SQLite
- If you would like to disable the catalog, see #config
- For big production instances I would recommend using Postgres over SQLite. To do this see #config
- To use postgres via the provided docker-compose files, see #docker
Deployment
Terminal
Prerequisites:
- Node & npm
- Git
- Clone the repo:
git clone https://github.com/nebulaservices/nebula && cd nebula
- Install all of the dependencies:
npm i
- Create a
config.toml
file
cp config.example.toml config.toml
- Modify the
config.toml
file to you liking (docs here)
nano config.toml
- Build the frontend & server:
npm run build
- Start the server
npm start
Note
You can run
npm run bstart
to build and start together
Docker
- There are two ways to deploy with docker:
Normal Docker
Prerequisites:
- Git
- Docker
- Clone the repo (skip if using prebuilt image):
git clone https://github.com/nebulaservices/nebula && cd nebula
- Create an
config.toml
file (if using prebuilt image, copy the example from the repo):
cp config.example.toml config.toml
- Modify the
config.toml
file to your liking (docs here)
nano config.toml
- Build the docker image (skip if using prebuilt):
docker build nebula:latest
-
Run the docker images:
- Prebuilt:
docker run -v ./config.toml:/app/config.toml ghcr.io/nebulaservices/nebula:latest
- Image you built yourself:
docker run -v ./config.toml:/app/config.toml nebula:latest
Docker Compose
Prerequisites:
- Git
- Docker w/compose
- Clone the repo (skip if using prebuilt image):
git clone https://github.com/nebulaservices/nebula
- Create an
config.toml
file (if using prebuilt image, copy the example from the repo):
cp config.example.toml config.toml
- Modify the
config.toml
file to your liking (docs on that here]
nano config.toml
- Build the docker image (skip if using prebuilt):
docker compose -f ./docker-compose.build.yml build
-
Run the docker image:
- Prebuilt:
docker compose up
- Image you built yourself:
docker compose -f ./docker-compose.build.yml up
Extra (Postgres)
- To use Postgres over SQlite, uncomment the DB section in the
docker-compose
file (or use your own postgres DB!). Then, modify theconfig.toml
(See: #config for knowledge on how to do this) - To use Postgres over SQlite in a normal docker environment (no compose), you'll have to set one up and then modify the
config.toml
to use it. (See: #config for knowledge on how to do this)
Config
- There are a couple of configuration options for nebula. Most of the time, the defaults are fine, but there are instances where you may not want certain options enabled or certain things running.
- An example config file is located here.
- Config format is in TOML
Variable | Description | Type | Default |
---|---|---|---|
marketplace |
The options below are for the marketplace section | object |
N/A |
enabled |
Enable marketplace functionality | boolean |
true |
psk |
The password and authentication key for the marketplace. CHANGE FROM DEFAULT | string |
CHANGEME |
---------------------------- | ---------------------------------------------------------------------------- | ------------ | -------------- |
db |
The below options are for the db (database) section | object |
N/A |
name |
The database name to use | string |
database |
username |
The username for the DB | string |
username |
password |
The database password. CHANGE FROM DEFAULT VALUE | string |
password |
postgres |
Whether to use postgres over sqlite (recommended for large production instances) | boolean |
false |
---------------------------- | ---------------------------------------------------------------------------- | ------------ | -------------- |
postgres |
The below options are for the postgres section. (Only worry about this if you enabled postgres in the db section.) | object |
N/A |
domain |
Either the TLD or the IP address of your postgres server. | string |
'' |
port |
The port your postgres server is listening on | number |
5432 |
---------------------------- | ---------------------------------------------------------------------------- | ------------ | -------------- |
server.server |
The below options are to configure the server. | object |
N/A |
port |
What port the server should listen on. (Note: Can also be configured via environment variable PORT ) |
number |
8080 |
wisp |
Whether the server should use the inbuilt wisp server. (Disabled if your using an external wisp server) | boolean |
true |
logging |
Whether or not to enable logging. Note: Logs are massive | boolean |
true |
---------------------------- | ---------------------------------------------------------------------------- | ------------ | -------------- |
server.rammerhead |
Configure the Rammerhead server. DO NOT TOUCH UNLESS YOU ARE CERTAIN YOU KNOW WHAT YOU ARE DOING | object |
N/A |
reverseproxy |
Whether or not the Rammerhead server is behind a reverse proxy | boolean |
true |
localstorage_sync |
Whether or not to use localstorage sync | boolean |
true |
http2 |
Whether to allow http2 or not | boolean |
true |