Releases: tryGoUp/GoUp
v0.5.0
GoUp noq includes a built-in, lightweight authoritative DNS server written in Go. It runs alongside the web server (or standalone) and shares the same high-performance architecture.
Features
- Authoritative Only: Designed to serve your zones, not to act as a recursive resolver.
- Record Types: Supports
A,AAAA,CNAME,TXT,MX,NS. - Integrated Logging: detailed query logging to
logs/system/. - Performance: Runs on its own goroutine with low overhead.
- Failover: Optional upstream resolvers for non-authoritative zones (limited forwarding).
Configuration
The DNS server is configured in the global configuration file (~/.config/goup/conf.global.json).
Enabling DNS
{
"dns": {
"enable": true,
"port": 53,
"upstream_resolvers": ["1.1.1.1", "8.8.8.8"],
"zones": {
"example.com": [
{ "type": "A", "name": "@", "value": "192.168.1.10", "ttl": 300 },
{ "type": "CNAME", "name": "www", "value": "@", "ttl": 300 },
{ "type": "TXT", "name": "_test", "value": "hello world", "ttl": 3600 }
]
}
}
}Fields
- enable: Set to
trueto start the DNS server. - port: UDP/TCP port to listen on (default: 53). Note: Ports < 1024 require root/sudo.
- upstream_resolvers: List of DNS servers to forward queries to if no local zone matches (optional).
- zones: Map of zone names to their records.
Record Structure
- type: Record type (
A,AAAA,CNAME,TXT,MX,NS). - name: Subdomain name. Use
@for the zone apex (e.g.example.com), or just the name (e.g.www). - value: The IP address, target domain, or text content.
- ttl: Time-To-Live in seconds.
- prio: Priority (only for
MXrecords).
New start commands
You can run the DNS server in different modes using the CLI:
- Full Stack (Web + DNS) (Default)
goup start
- DNS Only
goup start-dns
- Web Only
goup start-web
New Multi-Module Builds
For deployment in constrained environments, you can compile GoUp with only the components you need to save binary size.
-
Build DNS-Only Binary:
go build -tags dns_only -o goup-dns cmd/goup/main.go
-
Build Web-Only Binary:
go build -tags web_only -o goup-web cmd/goup/main.go
Full Changelog: v0.4.0...v0.5.0
v0.4.0
Full Changelog: v0.3.0...v0.4.0
v0.3.0
Introducing the new Smart Files Browser, that shows a clean UI in browser and a minimal one via curl and tools like that.
Full Changelog: v0.2.0...v0.3.0
v0.2.0
- Custom error pages
- New
--configflag to pass GoUp! configurations from a specific path
Full Changelog: v0.1.0...v0.2.0
v0.1.0
Added smart static serving and hybrid compression, read the README for more info.
Full Changelog: v0.0.9...v0.1.0
v0.0.9
Removed middleware buffering to prevent OOM on large files.
Full Changelog: v0.0.8...v0.0.9
v0.0.8
SafeGuard monitors memory usage and forces a restart if the limit is exceeded to prevent system freezing.
- Enabled by default with a 1GB limit
- Automatically captures a heap profile to
logs/before restarting - Logs activity to
logs/system/
Configuration (conf.global.json):
"safeguard": {
"enable": true,
"max_memory_mb": 2048
}Full Changelog: v0.0.7...v0.0.8
v0.0.7
Support for max_concurrent_connections.
v0.0.6
Improved performance by implementing structural network optimizations and zero-allocation logging.
What's New:
- Zero-Allocation Logging: Added a new asynchronous logger with
sync.Poolto recycle request and log structures, eliminating heap allocations in the hot path. - Network Tuning: Implemented
TCP_FASTOPENandSO_REUSEPORTon Linux listeners for faster connection handshakes and better multicore scaling. - Server Hardening: Enabled HTTP/1 Full Duplex support and added granular control over server timeouts to protect against slow connections.
New Configuration Keys
"enable_logging": (bool) Toggle request logging on/off."read_header_timeout": (int) Max seconds to read request headers."idle_timeout": (int) Max seconds to wait for the next request (Keep-Alive)."max_header_bytes": (int) Max size of request headers in bytes."request_timeout": (int) Updated logic: set to-1to disable timeouts completely.
Full Changelog: v0.0.5...v0.0.6
v0.0.5
Replaced fasthttp with net/http to prevent memory saturation causing large downloads to fail. This change does not affect any configuration.
Full Changelog: v0.0.4...v0.0.5