Geen omschrijving

Mariano Z. 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden
cmd 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden
frontend 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden
internal 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden
sql 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden
.dockerignore 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden
.gitignore 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden
Dockerfile 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden
README.md 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden
go.mod 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden
go.sum 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden
justfile 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden
mise.toml 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden
sqlc.yaml 05ad2f80a4 dev: automated commit - 2026-03-08 10:52:47 2 weken geleden

README.md

Goflare

Dynamic DNS updater for Cloudflare. Keeps your DNS records pointing at your current public IP, even when it changes.

How It Works

Goflare runs a configurable cron job that periodically fetches your public IP from multiple providers (with fallback) and compares it against the DNS records you've configured. When a change is detected, it updates the records via the Cloudflare REST API.

You manage your Cloudflare zones and DNS records through a web UI. Records can be marked as static to exclude them from automatic updates. The cron schedule is configurable at runtime through the settings page.

Stack

  • Backend: Go, SQLite (WAL mode), session-based auth, raw Cloudflare API calls (no SDK).
  • Frontend: Vue 3 SPA with Tailwind CSS and shadcn-vue components.
  • Single binary that serves both the API and the frontend.

Docker

Build

docker build -t goflare .

Run

docker run -p 8080:8080 -v ./data:/app/data -e GOFLARE_SESSION_SECRET=changeme goflare

Mount /app/data to persist the SQLite database across container restarts.

Environment Variables

Variable Default Description
GOFLARE_PORT :8080 Server listen address
GOFLARE_DB_PATH /app/data/goflare.db SQLite database path
GOFLARE_SESSION_SECRET (random) Set for sessions to survive restarts
GOFLARE_FRONTEND_DIR /app/frontend Path to built frontend assets

Docker Compose

services:
  goflare:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - ./data:/app/data
    environment:
      - GOFLARE_SESSION_SECRET=changeme