From b53a8d6264281d5f4790a0bf9ac2c3fa7576fdf2 Mon Sep 17 00:00:00 2001 From: pacnpal <183241239+pacnpal@users.noreply.github.com> Date: Tue, 28 Jan 2025 19:40:55 -0500 Subject: [PATCH] feat(docker): update Docker build workflow and enhance README with installation instructions and static file support --- .github/workflows/docker-build.yml | 2 +- README.md | 99 +++++++++++++++++++++++++++-- src/simpleguardhome/favicon.ico | Bin 0 -> 15086 bytes src/simpleguardhome/main.py | 8 ++- static/simpleguardhome.png | Bin 0 -> 35169 bytes 5 files changed, 102 insertions(+), 7 deletions(-) create mode 100644 src/simpleguardhome/favicon.ico create mode 100644 static/simpleguardhome.png diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 207a6fd..4882fc5 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -51,12 +51,12 @@ jobs: with: images: ${{ secrets.DOCKERHUB_USERNAME }}/simpleguardhome tags: | + type=raw,value=latest,enable={{is_default_branch}} type=sha,format=long type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} - type=ref,event=latest - name: Build and push uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 diff --git a/README.md b/README.md index a7b5893..77e3690 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,30 @@ -# SimpleGuardHome +

+ SimpleGuardHome Logo +

+ +

SimpleGuardHome

+ +

+ Version 0.1.0 + MIT License + Python 3.9+ +

A modern web application for checking and managing domain filtering in AdGuard Home. Built with FastAPI and modern JavaScript, following the official AdGuard Home OpenAPI specification. +## Quick Start + +```bash +# Using Docker +docker run -d -p 8000:8000 -e ADGUARD_HOST=http://localhost -e ADGUARD_PORT=3000 pacnpal/simpleguardhome:latest + +# Or using Python +pip install simpleguardhome +python -m uvicorn simpleguardhome.main:app --port 8000 +``` + +Then visit `http://localhost:8000` to start managing your AdGuard Home filtering. + ## Features - 🔍 Real-time domain filtering status checks @@ -13,18 +36,79 @@ A modern web application for checking and managing domain filtering in AdGuard H - ⚙️ Environment-based configuration - 📚 Full OpenAPI/Swagger documentation - ✅ Implements official AdGuard Home API spec +- 🐳 Docker support ## Requirements -- Python 3.9 or higher +### System Requirements +- Python 3.9 or higher (for local installation) - Running AdGuard Home instance - AdGuard Home API credentials (if authentication is enabled) +- Docker (optional, for containerized deployment) -## Installation +### Python Dependencies +- FastAPI - Web framework for building APIs +- Uvicorn - ASGI server implementation +- Python-dotenv - Environment variable management +- HTTPX - Modern HTTP client +- Pydantic - Data validation using Python type annotations +- Jinja2 - Template engine for the web interface + +## Docker Installation + +The easiest way to get started is using Docker: + +1. Pull the Docker image: +```bash +docker pull pacnpal/simpleguardhome:latest +``` + +2. Create a `.env` file with your AdGuard Home settings: +```env +ADGUARD_HOST=http://localhost # AdGuard Home host URL +ADGUARD_PORT=3000 # AdGuard Home API port +ADGUARD_USERNAME=admin # Optional: AdGuard Home username +ADGUARD_PASSWORD=password # Optional: AdGuard Home password +``` + +3. Run the container: +```bash +docker run -d \ + --name simpleguardhome \ + -p 8000:8000 \ + --env-file .env \ + pacnpal/simpleguardhome:latest +``` + +The application will be available at `http://localhost:8000` + +### Docker Compose + +Alternatively, you can use Docker Compose. Create a `docker-compose.yml` file: + +```yaml +version: '3' +services: + simpleguardhome: + image: pacnpal/simpleguardhome:latest + container_name: simpleguardhome + ports: + - "8000:8000" + env_file: + - .env + restart: unless-stopped +``` + +Then run: +```bash +docker-compose up -d +``` + +## Local Installation 1. Clone this repository: ```bash -git clone https://github.com/yourusername/simpleguardhome.git +git clone https://github.com/pacnpal/simpleguardhome.git cd simpleguardhome ``` @@ -56,6 +140,7 @@ ADGUARD_PASSWORD=password # Optional: AdGuard Home password ## Running the Application +### Local Development Start the application: ```bash python -m uvicorn src.simpleguardhome.main:app --reload @@ -151,9 +236,13 @@ simpleguardhome/ │ ├── adguard.py # AdGuard Home API client │ └── templates/ │ └── index.html # Web interface +├── static/ +│ └── simpleguardhome.png # Project logo ├── requirements.txt ├── setup.py ├── .env.example +├── Dockerfile +├── docker-compose.yml └── README.md ``` @@ -182,4 +271,4 @@ simpleguardhome/ ## License -MIT License - See LICENSE file for details +MIT License - See LICENSE file for details \ No newline at end of file diff --git a/src/simpleguardhome/favicon.ico b/src/simpleguardhome/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..762d7860320516a9e69b956e8fd98828d552ad3c GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/src/simpleguardhome/main.py b/src/simpleguardhome/main.py index d02332d..1cf4f6d 100644 --- a/src/simpleguardhome/main.py +++ b/src/simpleguardhome/main.py @@ -44,10 +44,16 @@ app.add_middleware( expose_headers=["X-Request-ID"] ) -# Setup templates directory +# Setup templates and static directories templates_path = Path(__file__).parent / "templates" templates = Jinja2Templates(directory=str(templates_path)) +# Mount static files from package directory +app.mount("/static", StaticFiles(directory=str(Path(__file__).parent)), name="static") + +# Mount favicon.ico at root +app.mount("/favicon.ico", StaticFiles(directory=str(Path(__file__).parent), files={"favicon.ico": "favicon.ico"}), name="favicon") + # Response models matching AdGuard spec class ErrorResponse(BaseModel): """Error response model according to AdGuard spec.""" diff --git a/static/simpleguardhome.png b/static/simpleguardhome.png new file mode 100644 index 0000000000000000000000000000000000000000..e79a7e7bd072d33e7bfefb55afaf053720dd20a5 GIT binary patch literal 35169 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 literal 0 HcmV?d00001