|
|
2 weeks ago | |
|---|---|---|
| cmd | 2 weeks ago | |
| frontend | 2 weeks ago | |
| internal | 2 weeks ago | |
| sql | 2 weeks ago | |
| .dockerignore | 2 weeks ago | |
| .gitignore | 2 weeks ago | |
| Dockerfile | 2 weeks ago | |
| README.md | 2 weeks ago | |
| go.mod | 2 weeks ago | |
| go.sum | 2 weeks ago | |
| justfile | 2 weeks ago | |
| mise.toml | 2 weeks ago | |
| sqlc.yaml | 2 weeks ago |
Dynamic DNS updater for Cloudflare. Keeps your DNS records pointing at your current public IP, even when it changes.
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.
On first run, open the app in your browser and create your account (setup page); after that you log in as usual.
docker build -t goflare .
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.
| 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 |
services:
goflare:
build: .
ports:
- "8080:8080"
volumes:
- ./data:/app/data
environment:
- GOFLARE_SESSION_SECRET=changeme
just run — build (sqlc + frontend + go) and run the server (serves API and frontend from bin/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 changing sql/schema/ or sql/queries/).just clean — remove bin/ and frontend/dist/.