Nebula Tower is a user-friendly server and client application that simplifies managing a Slack Nebula mesh network.
If you run the server component on a machine with a public IP address (like a $6/month Digital Ocean droplet), you can use the web interface to:
- 🔒 Create a Certificate Authority (CA) Certificate
- 🌐 Set up a Lighthouse server and its configuration
- 🖥️ Create hosts and generate their respective certificates and configs
- 🎟️ Create invites to connect users to a host
Clients (hosts) can easily download Nebula Tower generated configuration files and connect to the Nebula network using either a simple script or a Menubar application.
This is a very early version of Nebula tower. If you find the concept helpful, let's collaborate to improve the app.
To keep things simple, Nebula Tower handles some things differently than the standard Nebula setup. We store the CA, lighthouse, and host certificates all on the tower itself. While this makes administration easier, it also means the security of your network is less decentralized than a typical Nebula deployment.
We also use the nightly version of Nebula with v2 certificates. This is because we need IPv6 support to create enough internal hosts without running into address conflicts. You can find more details on this approach in the official Nebula documentation on upgrading to v2 certificates and IPv6.
(currently works on MacOS and Linux)
- Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
-
Download and unzip or clone this Repo
-
Build backend
cd nebula-tower # CD into the root directory of this project
./install_nebula_binaries.sh` # downloads nebula nightly
cd frontend
npm install # build the react app-
edit
frontend/.envand setVITE_API_BASE_URLto your server's address e.g. http://162.243.38.134:8000 (make sure you are editing yourfrontend/.envas there is a different .env in the root of the project) -
Build the frontend and copy sample env
npm run build
cd ..
cp .env.sample .env
-
Edit .env and set the variables
-
Run
uv run create_admin.pyand follow the instructions to create your first admin user (make sure to enable the promote flag) -
Now run
uv run main.py(you will have to do sudo in front if on macOS)
Do the above but then run the frontend separately
cd frontend; npm run dev
go to cd client/nebula-tower-menubar-app-tyne
./dev.sh
./build.sh
| Path | Description |
|---|---|
main.py |
Root file, server starting point |
frontend/ |
React app for the server |
data/ |
Directory where the server stores data |
bin/ |
Directory where Nebula binaries live |
client/nebula-tower-menubar-app-fyne |
Directory for the client Menubar application |
This wouldn't be possible without the awesome work of Slack Nebula. If you are looking for enterprise Nebula, you should work with the creators of Nebula at: https://www.defined.net/
We also use: Fyne, SQLite, FastAPI, SQLAlchemy, FastAPI-users, React, MUI Joy, Lucide Icons, SWR, and more.
GNU AFFERO GENERAL PUBLIC LICENSE v3

