{"id":14868651,"url":"https://github.com/bitvora/wot-relay","last_synced_at":"2026-01-26T00:45:11.734Z","repository":{"id":255684034,"uuid":"853395536","full_name":"bitvora/wot-relay","owner":"bitvora","description":"archiving every note in your web of trust","archived":false,"fork":false,"pushed_at":"2025-06-16T18:37:23.000Z","size":212,"stargazers_count":80,"open_issues_count":9,"forks_count":28,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-12T06:26:34.202Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bitvora.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-09-06T15:13:05.000Z","updated_at":"2025-12-30T22:40:57.000Z","dependencies_parsed_at":"2024-11-26T02:19:26.471Z","dependency_job_id":"8750f22c-80e5-415c-86af-bfebc398a2a3","html_url":"https://github.com/bitvora/wot-relay","commit_stats":null,"previous_names":["bitvora/wot-relay"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/bitvora/wot-relay","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitvora%2Fwot-relay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitvora%2Fwot-relay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitvora%2Fwot-relay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitvora%2Fwot-relay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bitvora","download_url":"https://codeload.github.com/bitvora/wot-relay/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitvora%2Fwot-relay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28763019,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T00:37:26.264Z","status":"ssl_error","status_checked_at":"2026-01-26T00:37:25.959Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-20T06:01:42.836Z","updated_at":"2026-01-26T00:45:11.718Z","avatar_url":"https://github.com/bitvora.png","language":"Go","funding_links":[],"categories":["Relays"],"sub_categories":["Implementations"],"readme":"# WoT Relay\n\nWOT Relay is a Nostr relay that saves all the notes that people you follow, and people they follow are posting. It's built on the [Khatru](https://khatru.nostr.technology) framework.\n\n# Available Relays\n\nDon't want to run the relay, just want to connect to some? Here are some available relays:\n\n- [wss://wot.utxo.one](https://wot.utxo.one)\n- [wss://nostrelites.org](https://nostrelites.org)\n- [wss://wot.nostr.party](https://wot.nostr.party)\n- [wss://wot.sovbit.host](https://wot.sovbit.host)\n- [wss://wot.girino.org](https://wot.girino.org)\n- [wss://relay.lnau.net](https://relay.lnau.net)\n- [wss://wot.siamstr.com](https://wot.siamstr.com)\n- [wss://relay.lexingtonbitcoin.org](https://relay.lexingtonbitcoin.org)\n- [wss://wot.azzamo.net](https://wot.azzamo.net)\n- [wss://wot.swarmstr.com](https://wot.swarmstr.com)\n- [wss://zap.watch](https://zap.watch)\n- [wss://satsage.xyz](https://satsage.xyz)\n- [wss://wons.calva.dev](https://wons.calva.dev)\n- [wss://wot.zacoos.com](https://wot.zacoos.com)\n- [wss://wot.shaving.kiwi](https://wot.shaving.kiwi)\n- [wss://wot.tealeaf.dev](https://wot.tealeaf.dev)\n- [wss://wot.nostr.net](https://wot.nostr.net)\n- [wss://relay.goodmorningbitcoin.com](https://relay.goodmorningbitcoin.com)\n- [wss://wot.sudocarlos.com](wss://wot.sudocarlos.com)\n\n## Prerequisites\n\n- **Go**: Ensure you have Go installed on your system. You can download it from [here](https://golang.org/dl/).\n- **Build Essentials**: If you're using Linux, you may need to install build essentials. You can do this by running `sudo apt install build-essential`.\n\n## Setup Instructions\n\nFollow these steps to get the WOT Relay running on your local machine:\n\n### 1. Clone the repository\n\n```bash\ngit clone https://github.com/bitvora/wot-relay.git\ncd wot-relay\n```\n\n### 2. Copy `.env.example` to `.env`\n\nYou'll need to create an `.env` file based on the example provided in the repository.\n\n```bash\ncp .env.example .env\n```\n\n### 3. Set your environment variables\n\nOpen the `.env` file and set the necessary environment variables. Example variables include:\n\n```bash\nRELAY_NAME=\"YourRelayName\"\nRELAY_PUBKEY=\"YourPublicKey\" # the owner's hexkey, not npub. Convert npub to hex here: https://nostrcheck.me/converter/\nRELAY_DESCRIPTION=\"Your relay description\"\nDB_PATH=\"/home/ubuntu/wot-relay/db\" # any path you would like the database to be saved.\nINDEX_PATH=\"/home/ubuntu/wot-relay/templates/index.html\" # path to the index.html file\nSTATIC_PATH=\"/home/ubuntu/wot-relay/templates/static\" # path to the static folder\nREFRESH_INTERVAL_HOURS=24 # interval in hours to refresh the web of trust\nMINIMUM_FOLLOWERS=3 #how many followers before they're allowed in the WoT\nARCHIVAL_SYNC=\"FALSE\" # set to TRUE to archive every note from every person in the WoT (not recommended)\nARCHIVE_REACTIONS=\"FALSE\" # set to TRUE to archive every reaction from every person in the WoT (not recommended)\nIGNORE_FOLLOWS_LIST=\"\" # comma separated list of pubkeys who follow too many bots and ruin the WoT\n```\n\n### 4. Build the project\n\nRun the following command to build the relay:\n\n```bash\ngo build -ldflags \"-X main.version=$(git describe --tags --always)\"\n```\n\n### 5. Create a Systemd Service (optional)\n\nTo have the relay run as a service, create a systemd unit file. Make sure to limit the memory usage to less than your system's total memory to prevent the relay from crashing the system.\n\n1. Create the file:\n\n```bash\nsudo nano /etc/systemd/system/wot-relay.service\n```\n\n2. Add the following contents:\n\n```ini\n[Unit]\nDescription=WOT Relay Service\nAfter=network.target\n\n[Service]\nExecStart=/home/ubuntu/wot-relay/wot-relay\nWorkingDirectory=/home/ubuntu/wot-relay\nRestart=always\nMemoryLimit=2G\n\n[Install]\nWantedBy=multi-user.target\n```\n\nReplace `/path/to/` with the actual paths where you cloned the repository and stored the `.env` file.\n\n3. Reload systemd to recognize the new service:\n\n```bash\nsudo systemctl daemon-reload\n```\n\n4. Start the service:\n\n```bash\nsudo systemctl start wot-relay\n```\n\n5. (Optional) Enable the service to start on boot:\n\n```bash\nsudo systemctl enable wot-relay\n```\n\n#### Permission Issues on Some Systems\n\nthe relay may not have permissions to read and write to the database. To fix this, you can change the permissions of the database folder:\n\n```bash\nsudo chmod -R 777 /path/to/db\n```\n\n### 6. Serving over nginx (optional)\n\nYou can serve the relay over nginx by adding the following configuration to your nginx configuration file:\n\n```nginx\nserver {\n    listen 80;\n    server_name yourdomain.com;\n\n    location / {\n        proxy_pass http://localhost:3334;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n    }\n}\n```\n\nReplace `yourdomain.com` with your actual domain name.\n\nAfter adding the configuration, restart nginx:\n\n```bash\nsudo systemctl restart nginx\n```\n\n### 7. Install Certbot (optional)\n\nIf you want to serve the relay over HTTPS, you can use Certbot to generate an SSL certificate.\n\n```bash\nsudo apt-get update\nsudo apt-get install certbot python3-certbot-nginx\n```\n\nAfter installing Certbot, run the following command to generate an SSL certificate:\n\n```bash\nsudo certbot --nginx\n```\n\nFollow the instructions to generate the certificate.\n\n### 8. Access the relay\n\nOnce everything is set up, the relay will be running on `localhost:3334` or your domain name if you set up nginx.\n\n## Start the Project with Docker Compose\n\nTo start the project using Docker Compose, follow these steps:\n\n1. Ensure Docker and Docker Compose are installed on your system.\n2. Navigate to the project directory.\n3. Ensure the `.env` file is present in the project directory and has the necessary environment variables set.\n4. You can also change the paths of the `db` folder and `templates` folder in the `docker-compose.yml` file.\n\n   ```yaml\n   volumes:\n     - \"./db:/app/db\" # only change the left side before the colon\n     - \"./templates/index.html:${INDEX_PATH}\" # only change the left side before the colon\n     - \"./templates/static:${INDEX_PATH}\" # only change the left side before the colon\n   ```\n\n5. Run the following command:\n\n   ```sh\n   # in foreground\n   docker compose up --build\n   # in background\n   docker compose up --build -d\n   ```\n\n6. For updating the relay, run the following command:\n\n   ```sh\n   git pull\n   docker compose build --no-cache\n   # in foreground\n   docker compose up\n   # in background\n   docker compose up -d\n   ```\n\nThis 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.\n\n### 7. Hidden Service with Tor (optional)\n\nSame as the step 6, but with the following command:\n\n```sh\n# in foreground\ndocker compose -f docker-compose.tor.yml up --build\n# in background\ndocker compose -f docker-compose.tor.yml up --build -d\n```\n\nYou can find the onion address here: `tor/data/relay/hostname`\n\n### 8. Access the relay\n\nOnce everything is set up, the relay will be running on `localhost:3334`.\n\n```bash\nhttp://localhost:3334\n```\n\n## License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitvora%2Fwot-relay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbitvora%2Fwot-relay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitvora%2Fwot-relay/lists"}