--- search: exclude: true --- # Teddit Setup ![](0.png) In this tutorial we're going to setup Teddit, a privacy front-end for Reddit. ## **Initial Setup** first install the dependencies [ nowhere.moe ] [ /dev/pts/2 ] [~] → apt install docker.io docker-compose -y Then run it with docker-compose: [ nowhere.moe ] [ /dev/pts/2 ] [/srv] → git clone https://codeberg.org/teddit/teddit Cloning into 'teddit'... remote: Enumerating objects: 609, done. remote: Counting objects: 100% (609/609), done. remote: Compressing objects: 100% (283/283), done. remote: Total 6548 (delta 492), reused 324 (delta 324), pack-reused 5939 Receiving objects: 100% (6548/6548), 4.35 MiB | 24.59 MiB/s, done. Resolving deltas: 100% (3049/3049), done. [ nowhere.moe ] [ /dev/pts/2 ] [/srv] → cd teddit [ nowhere.moe ] [ /dev/pts/2 ] [/srv/teddit] → vim docker-compose.yml [ nowhere.moe ] [ /dev/pts/2 ] [/srv/teddit] → cat docker-compose.yml # This docker-compose file is made for development purpose and build from source, if you want to use teddit in production, the README contains a production-ready docker-compose setup. version: "3" services: teddit: container_name: teddit build: . environment: - REDIS_HOST=teddit-redis ports: - "8082:8080" networks: - teddit_net healthcheck: test: ["CMD", "wget" ,"--no-verbose", "--tries=1", "--spider", "http://localhost:8080/about"] interval: 1m timeout: 3s depends_on: - teddit-redis teddit-redis: container_name: teddit-redis image: redis:6.2.5-alpine command: redis-server environment: - REDIS_REPLICATION_MODE=master networks: - teddit_net networks: teddit_net: [ nowhere.moe ] [ /dev/pts/2 ] [/srv/teddit] → docker-compose up -d Creating network "teddit_teddit_net" with the default driver Pulling teddit-redis (redis:6.2.5-alpine)... 6.2.5-alpine: Pulling from library/redis a0d0a0d46f8b: Pull complete a04b0375051e: Pull complete cdc2bb0f9590: Pull complete 8f19735ec10c: Pull complete ac5156a4c6ca: Pull complete 7b7e1b3fdb00: Pull complete Digest: sha256:fa785f9bd167b94a6b30210ae32422469f4b0f805f4df12733c2f177f500d1ba Status: Downloaded newer image for redis:6.2.5-alpine Building teddit Step 1/9 : FROM node:slim slim: Pulling from library/node faef57eae888: Pull complete f54b1e40b8eb: Pull complete 36433a2ca875: Pull complete 604c60d297fb: Pull complete aa860910361c: Pull complete Digest: sha256:11f66bf5d0842fe1f87457fabe62aa3bbcfbb739d231a39e67597af22d8f5ffd Status: Downloaded newer image for node:slim ---> 9eabbb6ea234 Step 2/9 : RUN apt-get update && apt-get install -y ffmpeg wget [...] [ nowhere.moe ] [ /dev/pts/2 ] [/srv/teddit] → docker-compose up -d teddit-redis is up-to-date Recreating teddit ... done Then from here you need to setup the reverse nginx proxy as follows: [ nowhere.moe ] [ /dev/pts/2 ] [/etc/nginx/sites-available] → vim teddit.nowhere.moe [ nowhere.moe ] [ /dev/pts/2 ] [/etc/nginx/sites-available] → cat teddit.nowhere.moe server { listen 443 ssl; server_name teddit.nowhere.moe; ssl_certificate /etc/acme/certs/teddit.nowhere.moe/teddit.nowhere.moe.cer; ssl_certificate_key /etc/acme/certs/teddit.nowhere.moe/teddit.nowhere.moe.key; ######## TOR CHANGES ######## listen 4443; listen [::]:4443; server_name teddit.daturab6drmkhyeia4ch5gvfc2f3wgo6bhjrv3pz6n7kxmvoznlkq4yd.onion; add_header Onion-Location "http://teddit.daturab6drmkhyeia4ch5gvfc2f3wgo6bhjrv3pz6n7kxmvoznlkq4yd.onion$request_uri" always; ######## TOR CHANGES ######## location / { proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://localhost:8082; } } [ nowhere.moe ] [ /dev/pts/2 ] [/etc/nginx/sites-available] → bash root@Datura /etc/nginx/sites-available # acme.sh --issue --standalone -d teddit.nowhere.moe -k 4096 root@Datura /etc/nginx/sites-available # ln -s /etc/nginx/sites-available/teddit.nowhere.moe /etc/nginx/sites-enabled/ 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 restart nginx Then we can test if the website is reachable: ![](1.png) And also from tor: ![](2.png) Then last step is contributing to the overall [list](https://codeberg.org/teddit/teddit#instances) of instances [like so](https://codeberg.org/teddit/teddit/issues/413): Then make sure teddit is restarted once every hour: [ nowhere.moe ] [ /dev/pts/1 ] [/srv/teddit] → crontab -e @hourly docker-compose -f /srv/teddit/docker-compose.yml stop ; git -C /srv/teddit/ pull ; docker-compose -f /srv/teddit/docker-compose.yml pull ; docker-compose -f /srv/teddit/docker-compose.yml up -d [ nowhere.moe ] [ /dev/pts/2 ] [~] → cronitor select ✔ docker-compose -f /srv/teddit/docker-compose.yml stop ; git -C /srv/teddit/ pull ; docker-compose -f /srv/teddit/docker-compose.yml pull ; docker-compose -f /srv/teddit/docker-compose.yml up -d ----► Running command: docker-compose -f /srv/teddit/docker-compose.yml stop ; git -C /srv/teddit/ pull ; docker-compose -f /srv/teddit/docker-compose.yml pull ; docker-compose -f /srv/teddit/docker-compose.yml up -d Stopping teddit ... done Stopping teddit-redis ... done Already up to date. Pulling teddit-redis ... done Starting teddit-redis ... done Starting teddit ... done ----► ✔ Command successful Elapsed time 14.079s