ShadowSelf is a web application that allows any individual to safeguard their privacy and anonymity in the digital age. With it, you can generate synthetic identities, complete with functional phone numbers, crypto wallets, email addresses, proxies and even more personalizable attributes.
By utilizing such fabricated identities, you can register for online services while concealing you true identity, offering a significant step toward protecting you privacy & right to remain anonymous online.
We encourage you to explore the codebase and contribute to areas you're comfortable with, especially if you have the skills to improve upon existing features or address bugs.
However, please be aware that certain core components and administrative modules are primarily intended for setup and ongoing management only by the project maintainer. These sections are integral, complex and are generally not designed for modification by all contributors.
If you're looking for areas to contribute, focusing on other parts of the application would be most beneficial.
-
Bun: Serves as the JavaScript runtime, dependency manager, and bundler for the web servers. -
Nginx: Employed as a reverse proxy for efficient request routing. -
PostgreSQL: Utilized as the primary database, configured to support backend operations. -
OpenVPN: Functions as the proxy node for secure outbound connections. -
Squid: Acts as the HTTPS proxy server, providing access to the OpenVPN network.
To run the application locally with Docker, execute docker-compose up --build. Note that this requires all necessary configuration files and environment variables to be correctly set up beforehand.
Alternatively, if you prefer a non-Docker setup, instructions are provided below.
-
bun installTo install all the dependencies -
bun devTo start the development server -
bun run buildTo build the project -
bun previewTo preview the project locally -
bun startTo start a production-ready server
-
bun installTo install all the dependencies -
psql -U postgres -f tables.sqlTo initialize the database -
bun devTo start the development backend server -
bun run buildTo build and compile the project -
./serverTo start a production-ready server
The proxy services can be orchestrated using docker-compose up --build. however, this method requires that all necessary environment variables and specific configurations are correctly in place for proper functionality.
For direct development or setup of individual components, please refer to the manual instructions below.
-
bun installTo install all necessary dependencies. -
bun devTo start the development server. -
bun run buildTo build the project for production. -
./proxyTo start the production-ready server. -
squid -f squid.confTo start the Squid proxy server using the squid.conf configuration file. -
openvpn --config server.confTo start the OpenVPN server and associated PKI infrastructure.
To set up the browser extension, navigate to its directory. Based on your browser, rename the appropriate manifest file to manifest.json. Then, go to your browser's extension settings, enable developer mode, and use the "load unpacked" option to select the extension's directory.
-
bun installTo install both eslint and prettier (project root) -
bun lintTo run the linter on the project -
bun formatTo run the code formatter
To quickly spawn a tmux session with all servers running and other relevant processes, follow these steps:
cd .scriptsTo navigate to the scripts directory.chmod +x tmux-session.shTo make thetmux-sessionscript executable.bash tmux-session.shTo run the script and start thetmux-sessionsession.
If you'd like to contribute, please open an issue or open a pull request.
Also checkout the CONTRIBUTING.md file for more information on how to contribute.
Here is the project system design if that might help you understand the architecture of the project better:
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). This license allows you to use, modify, and distribute this project under its terms. To view a copy of this license, visit https://www.gnu.org/licenses/agpl-3.0.html.
