{"id":15148068,"url":"https://github.com/ivvija/blocky-ui","last_synced_at":"2026-03-14T09:09:40.855Z","repository":{"id":247489978,"uuid":"825983653","full_name":"ivvija/blocky-ui","owner":"ivvija","description":"Simple web interface for blocky: https://github.com/0xERR0R/blocky","archived":false,"fork":false,"pushed_at":"2024-07-15T19:27:09.000Z","size":371,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-09-27T13:01:33.144Z","etag":null,"topics":["adblock","dns","golang","pihole","self-hosted","selfhosted","status","webapp"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ivvija.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-08T22:11:31.000Z","updated_at":"2024-09-11T18:56:34.000Z","dependencies_parsed_at":"2024-07-15T20:03:27.474Z","dependency_job_id":null,"html_url":"https://github.com/ivvija/blocky-ui","commit_stats":null,"previous_names":["ivvija/blocky-ui"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivvija%2Fblocky-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivvija%2Fblocky-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivvija%2Fblocky-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivvija%2Fblocky-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ivvija","download_url":"https://codeload.github.com/ivvija/blocky-ui/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219866820,"owners_count":16555824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adblock","dns","golang","pihole","self-hosted","selfhosted","status","webapp"],"created_at":"2024-09-26T13:01:15.602Z","updated_at":"2025-10-24T03:31:26.540Z","avatar_url":"https://github.com/ivvija.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# blocky-ui\n\nSimple web interface for [blocky](https://github.com/0xERR0R/blocky), a lightweight DNS proxy and DNS ad-blocker.\n\n## Features\n\n- web interface for all blocky API functions:\n    - toggle or pause blocking\n    - execute DNS queries\n    - refresh allow and deny lists\n    - flush DNS cache\n- uses [HTMX](https://htmx.org/) to get status and query updates\n- **no lost functionality if Javascript is disabled:**\n    - uses `\u003cform\u003e` for full page reloads\n    - pause end time instead of countdown\n\n### Screenshot\n\n![screenshot: status and query results](screenshot.png)\n\n## Config\n\nAll config is done via environment variables:\n\n| Name             | Info                                                                   | Default                  |\n|------------------|------------------------------------------------------------------------|--------------------------|\n| `HOST`           | HTTP host                                                              | `0.0.0.0`                |\n| `PORT`           | HTTP port                                                              | `3000`                   |\n| `API_BASE_URL`   | blocky API URL, no trailing slash                                      | `http://blocky:4000/api` |\n| `PAUSE_DURATION` | [Duration](https://pkg.go.dev/time#ParseDuration) for the pause button | `5m`                     |\n\n## Run with docker\n\nUse `-e API_BASE_URL=...` or `--env-file .env` to set the variables if needed.\n\n```shell\ndocker run --name blocky-ui -p 3000:3000 ghcr.io/ivvija/blocky-ui\n```\n\nBuild it yourself:\n\n```shell\ndocker buildx build --build-arg VERSION=latest . -t blocky-ui\n```\n\n\n### compose.yml\n\n```yaml\nservices:\n  blocky:\n    image: spx01/blocky  # alt: ghcr.io/0xerr0r/blocky\n    container_name: blocky\n    # ... other blocky config\n    # https://0xerr0r.github.io/blocky/latest/installation/#run-with-docker-compose\n\n  blocky-ui:\n    image: ghcr.io/ivvija/blocky-ui\n    container_name: blocky-ui\n    restart: unless-stopped\n    depends_on:\n      - blocky\n    environment:\n      API_BASE_URL: http://blocky:4000/api\n    ports:\n      - \"3000:3000/tcp\"\n```\n\n## Run locally for tinkering\n\nThis project is set up for [live-reloading with air](https://github.com/air-verse/air), so just run `air` and\nopen `http://127.0.0.1:8080/`\n\n## Notes\n\nThis is my first Go project, so issues and other comments are welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivvija%2Fblocky-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivvija%2Fblocky-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivvija%2Fblocky-ui/lists"}