mirror of
https://github.com/hzrd149/nsite-gateway.git
synced 2025-06-23 20:05:03 +00:00
128 lines
3.3 KiB
Markdown
128 lines
3.3 KiB
Markdown
# nsite-ts
|
|
|
|
A Typescript implementation of [nsite](https://github.com/lez/nsite)
|
|
|
|
## Running with docker-compose
|
|
|
|
```sh
|
|
git clone https://github.com/hzrd149/nsite-ts.git
|
|
cd nsite-ts
|
|
docker compose up
|
|
```
|
|
|
|
Once the service is running you can access the cached version at `http://localhost:8080`
|
|
|
|
If you need to test, you can directly access the ts server at `http://localhost:3000`
|
|
|
|
## Running with docker
|
|
|
|
The `ghcr.io/hzrd149/nsite-ts` image can be used to run a http instance locally
|
|
|
|
```sh
|
|
docker run --rm -it --name nsite -p 8080:80 ghcr.io/hzrd149/nsite-ts
|
|
```
|
|
|
|
## Manual nginx setup
|
|
|
|
Before manually setting up nginx and nsite-ts you need a few things installed
|
|
- [nginx](https://nginx.org/)
|
|
- [nodejs](https://nodejs.org/en/download/package-manager) (dep packages [here](https://deb.nodesource.com/))
|
|
- [pnpm](https://pnpm.io/) run `npm i -g pnpm` to install
|
|
|
|
Next your going to need to clone the nsite-ts repo and set it up
|
|
|
|
```sh
|
|
git clone https://github.com/hzrd149/nsite-ts
|
|
cd nsite-ts
|
|
|
|
# install dependencies
|
|
pnpm install
|
|
|
|
# build app
|
|
pnpm build
|
|
```
|
|
|
|
Then create a new `.env` file for configuration
|
|
|
|
```sh
|
|
cp .env.example .env
|
|
```
|
|
|
|
Next copy and setup the systemd service
|
|
|
|
```sh
|
|
sudo cp contrib/nsite.service /etx/systemd/system/nsite.service
|
|
|
|
# edit the service and set the working directory path
|
|
sudo nano /etx/systemd/system/nsite.service
|
|
|
|
# reload systemd service
|
|
sudo systemctl daemon-reload
|
|
|
|
# start service
|
|
sudo systemctl start nsite
|
|
```
|
|
|
|
Then once nsite-ts is running, next you need to configure nginx
|
|
|
|
Start by modifying the `/etx/nginx/nginx.conf` file and adding a `proxy_cache_path` to the `http` section
|
|
|
|
```sh
|
|
sudo nano /etc/nginx/nginx.conf
|
|
```
|
|
|
|
```diff
|
|
http {
|
|
+ proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=request_cache:10m max_size=10g inactive=60m use_temp_path=off;
|
|
}
|
|
```
|
|
|
|
Next modify the default site config (usually `/etx/nginx/sites-enabled/default` or `/etc/nginx/conf.d/default.conf`) to be one of
|
|
- [nginx/http.conf](./nginx/http.conf)
|
|
- [nginx/tls.conf](./nginx/tls.conf)
|
|
- [nginx/tls-and-tor.conf](./nginx/tls-and-tor.conf)
|
|
|
|
Once that is done you can restart nginx and you should have a new nsite server running on port 80
|
|
|
|
## Tor setup
|
|
|
|
First you need to install tor (`sudo apt install tor` on debian systems) or [Documentation](https://community.torproject.org/onion-services/setup/install/)
|
|
|
|
Then able the tor service
|
|
|
|
```sh
|
|
sudo systemctl enable tor
|
|
sudo systemctl start tor
|
|
```
|
|
|
|
### Setup hidden service
|
|
|
|
Modify the torrc file to enable `HiddenServiceDir` and `HiddenServicePort`
|
|
|
|
```
|
|
HiddenServiceDir /var/lib/tor/hidden_service/
|
|
HiddenServicePort 80 127.0.0.1:8080
|
|
```
|
|
|
|
Then restart tor
|
|
|
|
```sh
|
|
sudo systemctl restart tor
|
|
```
|
|
|
|
Next get the onion address using `cat /var/lib/tor/hidden_service/hostname` and set the `ONION_HOST` variable in the `.env` file
|
|
|
|
```sh
|
|
# don't forget to start with http://
|
|
ONION_HOST="http://q457mvdt5smqj726m4lsqxxdyx7r3v7gufzt46zbkop6mkghpnr7z3qd.onion"
|
|
```
|
|
|
|
### Connecting to Tor and I2P relays and blossom servers
|
|
|
|
Install Tor ([Documentation](https://community.torproject.org/onion-services/setup/install/)) and optionally I2Pd ([Documentation](https://i2pd.readthedocs.io/en/latest/user-guide/install/)) and then add the `TOR_PROXY` and `I2P_PROXY` variables to the `.env` file
|
|
|
|
```sh
|
|
TOR_PROXY=127.0.0.1:9050
|
|
I2P_PROXY=127.0.0.1:4447
|
|
```
|