Merge pull request #5 from HolgerHatGarKeineNode/master

feat: update Dockerfile, docker-compose and add Tor support for relay service
This commit is contained in:
Barry Deen 2024-09-07 13:25:19 -04:00 committed by GitHub
commit 5ba7aae9cd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 114 additions and 53 deletions

2
.dockerignore Normal file
View File

@ -0,0 +1,2 @@
db
templates

View File

@ -3,4 +3,5 @@ RELAY_PUBKEY="e2ccf7cf20403f3f2a4a55b328f0de3be38558a7d5f33632fdaaefc726c1c8eb"
RELAY_DESCRIPTION="Only notes in utxo WoT"
RELAY_URL="wss://wot.utxo.one"
DB_PATH="db"
INDEX_PATH="templates/index.html"
INDEX_PATH="templates/index.html"
STATIC_PATH="templates/static"

View File

@ -1,27 +1,31 @@
# Use Golang image based on Debian Bookworm
FROM golang:bookworm
# Set the working directory within the container
WORKDIR /app
# Clone the repository
RUN git clone https://github.com/bitvora/wot-relay .
# Download Go module dependencies
RUN go mod download
# Write the .env file
RUN touch .env && \
echo "RELAY_NAME=${RELAY_NAME}" >> .env && \
echo "RELAY_PUBKEY=${RELAY_PUBKEY}" >> .env && \
echo "RELAY_DESCRIPTION=${RELAY_DESCRIPTION}" >> .env && \
echo "DB_PATH=${DB_PATH}" >> .env
# Build the Go application
RUN go build -o main .
# Expose the port that the application will run on
EXPOSE 3334
# Set the command to run the executable
CMD ["./main"]
# Use Golang image based on Debian Bookworm
FROM golang:bookworm
# Set the working directory within the container
WORKDIR /app
# Copy go.mod and go.sum files
COPY go.mod go.sum ./
# Download dependencies
RUN go mod download
# Copy the rest of the application source code
COPY . .
# Set fixed environment variables
ENV DB_PATH="db"
ENV INDEX_PATH="templates/index.html"
ENV STATIC_PATH="templates/static"
# touch a .env (https://github.com/bitvora/wot-relay/pull/4)
RUN touch .env
# Build the Go application
RUN go build -o main .
# Expose the port that the application will run on
EXPOSE 3334
# Set the command to run the executable
CMD ["./main"]

View File

@ -97,26 +97,51 @@ To start the project using Docker Compose, follow these steps:
1. Ensure Docker and Docker Compose are installed on your system.
2. Navigate to the project directory.
3. Edit the `docker-compose.yml` file to update the environment variables as needed:
3. Ensure the `.env` file is present in the project directory and has the necessary environment variables set.
4. You can also change the paths of the `db` folder and `templates` folder in the `docker-compose.yml` file.
```yaml
environment:
RELAY_NAME: "utxo WoT relay"
RELAY_PUBKEY: "YOURPUBKEY"
RELAY_DESCRIPTION: "Only notes in utxo WoT"
DB_PATH: "./db"
```
```yaml
volumes:
- "./db:/app/db" # only change the left side before the colon
- "./templates/index.html:/app/templates/index.html" # only change the left side before the colon
- "./templates/static:/app/templates/static" # only change the left side before the colon
```
4. Run the following command:
5. Run the following command:
```sh
docker-compose up --build
# in foreground
docker compose up --build
# in background
docker compose up --build -d
```
6. For updating the relay, run the following command:
```sh
git pull
docker compose build --no-cache
# in foreground
docker compose up
# in background
docker compose up -d
```
This will build the Docker image and start the `wot-relay` service as defined in the `docker-compose.yml` file. The application will be accessible on port 3334.
### 7. Hidden Service with Tor (optional)
### 7. Access the relay
Same as the step 6, but with the following command:
```sh
# in foreground
docker compose -f docker-compose.tor.yml up --build
# in background
docker compose -f docker-compose.tor.yml up --build -d
```
You can find the onion address here: `tor/data/relay/hostname`
### 8. Access the relay
Once everything is set up, the relay will be running on `localhost:3334`.

25
docker-compose.tor.yml Normal file
View File

@ -0,0 +1,25 @@
services:
relay:
container_name: wot-relay
build:
context: .
dockerfile: Dockerfile
env_file:
- .env
volumes:
- "./db:/app/db"
- "./templates/index.html:/app/templates/index.html"
- "./templates/static:/app/templates/static"
ports:
- "3334"
tor:
image: lncm/tor:0.4.7.9@sha256:86c2fe9d9099e6376798979110b8b9a3ee5d8adec27289ac4a5ee892514ffe92
container_name: wot-relay-tor
depends_on:
- relay
volumes:
- ./tor/torrc:/etc/tor/torrc
- ./tor/data:/var/lib/tor
restart: on-failure
stop_grace_period: 10m30s

View File

@ -1,14 +1,14 @@
services:
wot-relay:
build:
context: .
dockerfile: Dockerfile
environment:
RELAY_NAME: "utxo WoT relay"
RELAY_PUBKEY: "e2ccf7cf20403f3f2a4a55b328f0de3be38558a7d5f33632fdaaefc726c1c8eb"
RELAY_DESCRIPTION: "Only notes in utxo WoT"
DB_PATH: "./db"
volumes:
- "./db:/app/db"
ports:
- "3334:3334"
services:
relay:
container_name: wot-relay
build:
context: .
dockerfile: Dockerfile
env_file:
- .env
volumes:
- "./db:/app/db" # only change the left side before the colon
- "./templates/index.html:/app/templates/index.html" # only change the left side before the colon
- "./templates/static:/app/templates/static" # only change the left side before the colon
ports:
- "3334:3334"

2
tor/data/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*
!.gitignore

2
tor/torrc Normal file
View File

@ -0,0 +1,2 @@
HiddenServiceDir /var/lib/tor/relay
HiddenServicePort 80 relay:3334