Skip to main content

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

gancho-0.1.1.tar.gz (40.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gancho-0.1.1-py3-none-any.whl (3.6 kB view details)

Uploaded Python 3

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

Hashes for gancho-0.1.1.tar.gz
Algorithm Hash digest
SHA256 57deb6bb0170356257a1825a56f59a5f70cbd3d1eeff06f9a02d07e12136bd01
MD5 2e949736c7ac61b55b10f8eca4a86ba9
BLAKE2b-256 737ae9ce29fecde866d9b798cae65d005d96769f8ac67ec2e85abb2afba1f97d

See more details on using hashes here.

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

Hashes for gancho-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bc025e1c445594c5cd06b9be2c2407259f5fab982f1540f4b7d4317eff0a1b1b
MD5 9c0e7ae44d2f00bd01432aaf6fd7b07f
BLAKE2b-256 38f80e1ee2eabc859a0da7fadc9c15dd30b7f83cc62a0123d1fb419e15e3ebc2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page