Gancho receives webhooks and triggers actions in response.
Project description
Gancho takes websocket payload and perform actions
Usage:
On github set websocket for the desired events, recommended Tag Creation.
Installation
# Service directories
mkdir p /opt/gancho
# Service User
sudo useradd -r -s /usr/sbin/nologin -d /opt/gancho -M gancho
# This gives permission to manipulate /var/www, adjust for your needs
sudo chown -R gancho:www-data /opt/gancho
sudo chown -R root:www-data /var/www
sudo chmod -R 775 /var/www
sudo usermod -aG www-data gancho
# Environment
cd /opt/gancho
uv venv
uv pip install gancho
Test it
$ /opt/gancho/.venv/bin/gancho
INFO: Started server process [4321]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:5000 (Press CTRL+C to quit)]
On a separate terminal
curl -X POST localhost:5000 -H "x-github-event:ping"
Service Daemon
Soket directory
sudo mkdir -p /run/gancho
sudo chown gancho:www-data /run/gancho
sudo chmod 770 /run/gancho
/etc/systemd/system/gancho.socket
[Unit]
Description=Socket do gancho
[Socket]
ListenStream=/run/gancho/gancho.sock
SocketMode=0660
SocketUser=gancho
SocketGroup=www-data
[Install]
WantedBy=sockets.target
/etc/systemd/system/gancho.service
[Unit]
Description=gancho daemon
Requires=gancho.socket
After=network.target
[Service]
User=gancho
Group=www-data
WorkingDirectory=/opt/gancho
ExecStart=/opt/gancho/.venv/bin/gancho
Restart=always
RestartSec=5
StandardInput=socket
[Install]
WantedBy=multi-user.target
Start the service
sudo systemctl daemon-reload
sudo systemctl enable --now gancho.socket
sudo systemctl status gancho.service # will start only when socket is used
$ systemctl status gancho
○ gancho.service - gancho daemon
Loaded: loaded (/etc/systemd/system/gancho.service; disabled; preset: enabled)
Active: inactive (dead)
TriggeredBy: ● gancho.socket
Nginx host
Replace example.com with your host
/etc/nginx/sites-available/gancho
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://unix:/run/gancho/gancho.sock;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
ln -s /etc/nginx/sites-available/gancho /etc/nginx/sites-enabled/gancho
nginx -t
sudo systemctl restart nginx
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gancho-0.1.1.tar.gz.
File metadata
- Download URL: gancho-0.1.1.tar.gz
- Upload date:
- Size: 40.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57deb6bb0170356257a1825a56f59a5f70cbd3d1eeff06f9a02d07e12136bd01
|
|
| MD5 |
2e949736c7ac61b55b10f8eca4a86ba9
|
|
| BLAKE2b-256 |
737ae9ce29fecde866d9b798cae65d005d96769f8ac67ec2e85abb2afba1f97d
|
File details
Details for the file gancho-0.1.1-py3-none-any.whl.
File metadata
- Download URL: gancho-0.1.1-py3-none-any.whl
- Upload date:
- Size: 3.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc025e1c445594c5cd06b9be2c2407259f5fab982f1540f4b7d4317eff0a1b1b
|
|
| MD5 |
9c0e7ae44d2f00bd01432aaf6fd7b07f
|
|
| BLAKE2b-256 |
38f80e1ee2eabc859a0da7fadc9c15dd30b7f83cc62a0123d1fb419e15e3ebc2
|