WebhookProxy | Discord webhooks go brrrrrrr

I’m not sure about that actually, I just ran this on server console in a live game server and it worked


image

1 Like

If it is true, it is still better to use a proxy, and more backup proxies, and then the normal discord URL as a last resort.
In case they ban it again.

You can also do it on a live game too.

Hi, trying to figure out how to host a private instance of this service; are there any guides on this available? The Github readme is criminally nondescriptive.

1 Like

This is how i set it up on Almalinux 8.10 and 9.4
I use CyberPanel, for the OpenLiteSpeed proxy, to show the sub domain instead of the IP.

For Almalinux 8 and 9:
Install basic SSH node modules
yum install -y dnf
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-conf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/python-dnf-0.6.4-2.sdl7.noarch.rpm
yum install -y dnf-0.6.4-2.sdl7.noarch.rpm dnf-conf-0.6.4-2.sdl7.noarch.rpm python-dnf-0.6.4-2.sdl7.noarch.rpm
curl -sL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs
sudo yum install -y gcc-c++ make nano sendmail net-tools htop unzip curl libtool autoconf
dnf install -y nsolid
sudo npm install -g pm2@latest yarn npm@latest
pm2 update
Install Redis

Install Redis

Install RabbitMQ
sudo dnf -y update
sudo dnf install vim -y
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
sudo dnf install -y erlang
sudo dnf install -y rabbitmq-server
sudo dnf install -y epel-release
sudo dnf install -y gcc glibc-devel make ncurses-devel openssl-devel autoconf m4 unixODBC-devel wget
cd /root
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v26.2.5.2/erlang-26.2.5.2-1.el8.x86_64.rpm
sudo dnf localinstall -y erlang-26.2.5.2-1.el8.x86_64.rpm
sudo tee /etc/yum.repos.d/rabbitmq.repo <<EOF
# In /etc/yum.repos.d/rabbitmq.repo

##
## Zero dependency Erlang RPM
##

[modern-erlang]
name=modern-erlang-el9
# uses a Cloudsmith mirror @ yum.novemberain.com.
# Unlike Cloudsmith, it does not have any traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/9/$basearch
        https://yum2.novemberain.com/erlang/el/9/$basearch
        https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/9/$basearch
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[modern-erlang-noarch]
name=modern-erlang-el9-noarch
# uses a Cloudsmith mirror @ yum.novemberain.com.
# Unlike Cloudsmith, it does not have any traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/9/noarch
        https://yum2.novemberain.com/erlang/el/9/noarch
        https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/9/noarch
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
       https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[modern-erlang-source]
name=modern-erlang-el9-source
# uses a Cloudsmith mirror @ yum.novemberain.com.
# Unlike Cloudsmith, it does not have any traffic quotas
baseurl=https://yum1.novemberain.com/erlang/el/9/SRPMS
        https://yum2.novemberain.com/erlang/el/9/SRPMS
        https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/rpm/el/9/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key
       https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1


##
## RabbitMQ Server
##

[rabbitmq-el9]
name=rabbitmq-el9
baseurl=https://yum2.novemberain.com/rabbitmq/el/9/$basearch
        https://yum1.novemberain.com/rabbitmq/el/9/$basearch
        https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/9/$basearch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
       https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[rabbitmq-el9-noarch]
name=rabbitmq-el9-noarch
baseurl=https://yum2.novemberain.com/rabbitmq/el/9/noarch
        https://yum1.novemberain.com/rabbitmq/el/9/noarch
        https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/9/noarch
repo_gpgcheck=1
enabled=1
# Cloudsmith's repository key and RabbitMQ package signing key
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
       https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc
gpgcheck=1
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md

[rabbitmq-el9-source]
name=rabbitmq-el9-source
baseurl=https://yum2.novemberain.com/rabbitmq/el/9/SRPMS
        https://yum1.novemberain.com/rabbitmq/el/9/SRPMS
        https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el/9/SRPMS
repo_gpgcheck=1
enabled=1
gpgkey=https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key
gpgcheck=0
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
pkg_gpgcheck=1
autorefresh=1
type=rpm-md
EOF

rpm --import 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/rabbitmq-release-signing-key.asc'
rpm --import 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key'
rpm --import 'https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key'

sudo rpm --import rabbitmq-server-3.13.5-1.el8.noarch.rpm.asc
sudo rpm -Uvh rabbitmq-server-3.13.5-1.el8.noarch.rpm

sudo rabbitmq-plugins enable rabbitmq_management
dnf update -y
dnf install socat logrotate -y
dnf install -y erlang rabbitmq-server
sudo systemctl enable rabbitmq-server
sudo systemctl start rabbitmq-server
rabbitmqctl add_user Admin PASSWORDHERE
rabbitmqctl set_user_tags Admin administrator
rabbitmqctl set_permissions -p / Admin ".*" ".*" ".*"
sudo systemctl restart rabbitmq-server
sudo systemctl status rabbitmq-server
sudo firewall-cmd --permanent --add-port=5672/tcp
sudo firewall-cmd --permanent --add-port=15672/tcp
sudo firewall-cmd --reload

Once you have installed RabbitMQ, you can run the following command in the Run-Webhook.

You can place the webhook folder anywhere you want, but i suggest not posting it in a public folder.
This example is not a good place to post it.
/home/newstargeted.com/public_html

cd /home/webhook-proxy
git clone GitHub - lewisakura/webhook-proxy: A Discord webhook proxy, primarily for Roblox games.

Duplicate and or rename the config.example.json into config.json.
You can also edit the config file as needed.
See normal configs here:
WebhookProxy | Discord webhooks go brrrrrrr - #23 by lewisakura

Run-Webhook
cd /home/webhook-proxy
npm i -g pm2 yarn
npm install pm2@latest -g
pm2 update
pm2 flush
pm2 delete all
pm2 save --force
yarn && yarn build
pm2 start dist/index.js --name=webhook-proxy -i 1
pm2 start dist/queueProcessor.js --name=webhook-proxy-processor -i 1
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size=1G retain=5 compress=true
pm2 set pm2-logrotate:retain 5
pm2 set pm2-logrotate:compress true
pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss
pm2 set pm2-logrotate:dateFormat ss-mm-HH-MM-YYYY
pm2 save
pm2 update
pm2 logs

After that, you need some way of using the proxy against your domain, such as a reproxy.
I use CyberPanel, where i then use OLS (Open Lite Speed)
Where i use my https://webhook.newstargeted.com as an example:

Since i save the external app as a webhook, i go into the .htaccess and use this as a rewrite.
image

For Ubuntu:
Install Basic SSH Node Modules
# Update package list
sudo apt update

# Install required packages
sudo apt install -y curl software-properties-common gcc g++ make nano sendmail net-tools htop unzip libtool autoconf

# Install Node.js and NPM (Node.js 18.x)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

# Install PM2 and Yarn globally
sudo npm install -g pm2@latest yarn npm@latest

# Update PM2
pm2 update
Install Redis

Install Redis

Install RabbitMQ
# Update package list
sudo apt update

# Install Vim (optional)
sudo apt install -y vim

# Install Erlang dependencies
sudo apt install -y erlang

# Add RabbitMQ repository and public key
sudo apt-get install -y curl gnupg
curl -fsSL https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | sudo apt-key add -
echo "deb https://packages.erlang-solutions.com/ubuntu $(lsb_release -cs) contrib" | sudo tee /etc/apt/sources.list.d/erlang.list

curl -fsSL https://packages.rabbitmq.com/debian/rabbitmq-signing-key.asc | sudo apt-key add -
echo "deb https://packages.rabbitmq.com/debian $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list

# Update package list after adding repositories
sudo apt update

# Install RabbitMQ server and Erlang
sudo apt install -y rabbitmq-server

# Enable and start RabbitMQ service
sudo systemctl enable rabbitmq-server
sudo systemctl start rabbitmq-server

# Enable RabbitMQ management plugin
sudo rabbitmq-plugins enable rabbitmq_management

# Add RabbitMQ user with administrative privileges
sudo rabbitmqctl add_user Admin PASSWORDHERE
sudo rabbitmqctl set_user_tags Admin administrator
sudo rabbitmqctl set_permissions -p / Admin ".*" ".*" ".*"

# Open necessary ports in the firewall
sudo ufw allow 5672/tcp
sudo ufw allow 15672/tcp
sudo ufw reload

# Verify RabbitMQ service status
sudo systemctl status rabbitmq-server

Once you have installed RabbitMQ, you can run the following command in the Run-Webhook.

You can place the webhook folder anywhere you want, but i suggest not posting it in a public folder.
This example is not a good place to post it.
/home/newstargeted.com/public_html

cd /home/webhook-proxy
git clone GitHub - lewisakura/webhook-proxy: A Discord webhook proxy, primarily for Roblox games.

Duplicate and or rename the config.example.json into config.json.
You can also edit the config file as needed.
See normal configs here:
WebhookProxy | Discord webhooks go brrrrrrr - #23 by lewisakura

Run-Webhook
# Clone the webhook-proxy repository
cd /home/webhook-proxy
git clone https://github.com/LewisTehMinerz/webhook-proxy

# Duplicate or rename config.example.json to config.json and edit as needed
cd webhook-proxy
cp config.example.json config.json

# Install PM2 and Yarn globally if not already done
sudo npm install -g pm2 yarn

# Install dependencies and build the project
yarn && yarn build

# Start the webhook proxy with PM2
pm2 start dist/index.js --name=webhook-proxy -i 1
pm2 start dist/queueProcessor.js --name=webhook-proxy-processor -i 1

# Set up PM2 logrotate
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 1G
pm2 set pm2-logrotate:retain 5
pm2 set pm2-logrotate:compress true
pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss
pm2 save
pm2 update
pm2 logs

After that, you need some way of using the proxy against your domain, such as a reproxy.
I use CyberPanel, where i then use OLS (Open Lite Speed)
Where i use my https://webhook.newstargeted.com as an example:

Since i save the external app as a webhook, i go into the .htaccess and use this as a rewrite.
image

1 Like

I’m not sure if its just me or it looks like the proxy is either down or discord has stopped taking my requests?
Here is what my output looks like:
image

As you can see everything is fine, at least to me, but my messages are not printing in a discord channel? It was working perfectly fine a couple of hours ago so I’m not sure what has happened.

1 Like

You’re fine, the holdup is on Discord’s end. More info here WebhookProxy | Discord webhooks go brrrrrrr - #293 by lewisakura

Do you have any specific instructions for Ubuntu Linux?

I updated the tutorial for all 3. Almalinux 8, Almalinux 9, and Ubuntu.

I have been encountering a bunch of internal server errors, is there any information on this?

3 Likes

I’m not sure how this is happening, but I just got around to setting up my own instance and the webhook proxy appears to be throwing out a slew of errors regarding a connection to localhost (specifically 127.0.0.1 port 6379) being refused, any idea what’s causing this?


(this goes on for a long time.)

EDIT: Found out that the redis package was needed, why was that not a part of the instructions? :neutral_face:

2 Likes

My web host panel that i use (CyberPanel) has Redis pre installed, so it slipped my mind :slight_smile:

1 Like

Roblox and Guilded have the opportunity to do something funny.

What do you mean by funny, when there are no users on the platform?

1 Like

Hello, using /queue seems to only return an HTTP 403 error? Don’t really have any other way to handle rate limiting either