- Vue 64.3%
- Go 25.1%
- TypeScript 7.5%
- CSS 1.4%
- Dockerfile 1.1%
- Other 0.6%
| cmd/goflare | ||
| frontend | ||
| internal | ||
| sql | ||
| .dockerignore | ||
| .gitignore | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| justfile | ||
| mise.toml | ||
| README.md | ||
| sqlc.yaml | ||
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 and the list of IP lookup providers (with fallback) are configurable at runtime in Settings.
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.
On first run, open the app in your browser and create your account (setup page); after that you log in as usual.
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
Local development
just run— build (sqlc + frontend + go) and run the server (serves API and frontend frombin/goflare).just frontend-dev— run the Vite dev server with API proxy to the Go backend (run the backend separately, e.g.go run ./cmd/goflare).just gen— regenerate sqlc only (after changingsql/schema/orsql/queries/).just clean— removebin/andfrontend/dist/.