In this tutorial we're going to look at how to setup AnonymousOverflow, a privacy front-end for StackOverflow.
First git-clone it and run it via docker-compose:
[ nowhere.moe ] [ /dev/pts/1 ] [/srv]
→ git clone https://github.com/httpjamesm/AnonymousOverflow
Cloning into 'AnonymousOverflow'...
remote: Enumerating objects: 778, done.
remote: Counting objects: 100% (287/287), done.
remote: Compressing objects: 100% (92/92), done.
remote: Total 778 (delta 197), reused 255 (delta 177), pack-reused 491
Receiving objects: 100% (778/778), 133.76 KiB | 7.04 MiB/s, done.
Resolving deltas: 100% (432/432), done.
[ nowhere.moe ] [ /dev/pts/1 ] [/srv]
→ cd AnonymousOverflow
[ nowhere.moe ] [ /dev/pts/1 ] [/srv/AnonymousOverflow]
→ ls
config docker-compose.example.yml Dockerfile env go.mod go.sum LICENSE main.go public README.md src templates
[ nowhere.moe ] [ /dev/pts/1 ] [/srv/AnonymousOverflow]
→ cat docker-compose.yml
version: '3'
services:
anonymousoverflow:
container_name: 'app'
build:
context: .
environment:
- APP_URL=https://overflow.nowhere.moe
- JWT_SIGNING_SECRET=nlkdwadwawwadwawa
ports:
- '8081:8080'
restart: 'always'
[ nowhere.moe ] [ /dev/pts/1 ] [/srv/AnonymousOverflow]
→ docker-compose up -d
Recreating app ... done
[ nowhere.moe ] [ /dev/pts/1 ] [/srv/AnonymousOverflow]
→ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fd597c0798ca anonymousoverflow_anonymousoverflow "/anonymousoverflow" 16 seconds ago Up 15 seconds 0.0.0.0:8081->8080/tcp, :::8081->8080/tcp app
then we setup a reverse nginx proxy on it:
[ nowhere.moe ] [ /dev/pts/1 ] [/etc/nginx/sites-available]
→ vim overflow.nowhere.moe.conf
[ nowhere.moe ] [ /dev/pts/1 ] [/etc/nginx/sites-available]
→ cat overflow.nowhere.moe.conf
server {
listen 443 ssl;
server_name overflow.nowhere.moe;
ssl_certificate /etc/acme/certs/overflow.nowhere.moe/overflow.nowhere.moe.cer;
ssl_certificate_key /etc/acme/certs/overflow.nowhere.moe/overflow.nowhere.moe.key;
######## TOR CHANGES ########
listen 4443;
listen [::]:4443;
server_name overflow.daturab6drmkhyeia4ch5gvfc2f3wgo6bhjrv3pz6n7kxmvoznlkq4yd.onion;
add_header Onion-Location "http://overflow.daturab6drmkhyeia4ch5gvfc2f3wgo6bhjrv3pz6n7kxmvoznlkq4yd.onion$request_uri" always;
######## TOR CHANGES ########
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://localhost:8081;
}
}
[ nowhere.moe ] [ /dev/pts/1 ] [/etc/nginx/sites-available]
→ ln -s /etc/nginx/sites-available/overflow.nowhere.moe.conf /etc/nginx/sites-enabled
[ nowhere.moe ] [ /dev/pts/1 ] [/etc/nginx/sites-available]
→ nginx -t
2023/07/16 00:10:22 [warn] 200694#200694: "ssl_stapling" ignored, issuer certificate not found for certificate "/etc/acme/certs/nitter.nowhere.moe/nitter.nowhere.moe.cer"
2023/07/16 00:10:22 [emerg] 200694#200694: cannot load certificate "/etc/acme/certs/overflow.nowhere.moe/overflow.nowhere.moe.cer": BIO_new_file() failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/etc/acme/certs/overflow.nowhere.moe/overflow.nowhere.moe.cer, r) error:10000080:BIO routines::no such file)
nginx: configuration file /etc/nginx/nginx.conf test failed
[ nowhere.moe ] [ /dev/pts/1 ] [/etc/nginx/sites-available]
→ systemctl stop nginx
[ nowhere.moe ] [ /dev/pts/1 ] [/etc/nginx/sites-available]
→ bash
root@Datura /etc/nginx/sites-available # history | grep acme | tail -n2
299 acme.sh --issue --standalone -d whoogle.nowhere.moe -k 4096
315 history | grep acme | tail -n2
root@Datura /etc/nginx/sites-available # acme.sh --issue --standalone -d overflow.nowhere.moe -k 4096
root@Datura /etc/nginx/sites-available # nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@Datura /etc/nginx/sites-available # systemctl start nginx
Then check if your instance is accessible:
Then contribute to the project by listing your instance for other users like so
Donate XMR: 8AUYjhQeG3D5aodJDtqG499N5jXXM71gYKD8LgSsFB9BUV1o7muLv3DXHoydRTK4SZaaUBq4EAUqpZHLrX2VZLH71Jrd9k8