Sign up and copy your API key from the dashboard. Keys start with sk_. The free plan includes blocklist access.
$ mkdir sikkerguard && cd sikkerguardSikkerGuard runs as a single Docker container. It needs network_mode: host to manage your server's iptables directly, and NET_ADMIN + SYSLOG capabilities to create firewall rules and read kernel logs. The Docker socket mount enables one-click updates from the dashboard.
services: sikkerguard: image: sikkerapi/guard:latest network_mode: host cap_add: - NET_ADMIN - SYSLOG devices: - /dev/kmsg:/dev/kmsg volumes: - ./data:/var/lib/sikkerguard - /var/run/docker.sock:/var/run/docker.sock restart: unless-stopped
That's the only file you need. Your API key and all configuration are entered through the web dashboard — no config files to manage.
Pull the image and start SikkerGuard in the background. The dashboard will be available at http://your-server:7064.
$ sudo docker compose up -d [+] Running 1/1 ✔ Container sikkerguard Started 0.8s $ sudo docker compose logs -f sikkerguard sikkerguard | SikkerGuard v1.0.0 sikkerguard | Dashboard: http://0.0.0.0:7064 sikkerguard | Setup required — open dashboard to configure
Open http://your-server:7064 in your browser. The setup page asks for a dashboard admin account and your SikkerAPI key. The key is validated against SikkerAPI in real time.
After setup, you'll land on the dashboard. Click the toggle to enable SikkerGuard. It will immediately pull the threat blocklist from SikkerAPI and apply it to your iptables firewall. Blocked connections appear in the live firewall log.
| Time | IP Address | Action | Proto | Pkts | Source |
|---|---|---|---|---|---|
| 14:23:07 | 185.220.101.34 | BLOCKED | ssh | 5 | SikkerAPI |
| 14:23:03 | 80.94.92.168 | BLOCKED | ssh | 3 | AbuseIPDB |
| 14:22:50 | 45.148.10.240 | BLOCKED | http | 1 | SikkerAPI |
| 14:22:48 | 93.174.95.106 | BLOCKED | ssh | 12 | blocklist |
The Sources page lets you manage where SikkerGuard gets its threat data. SikkerAPI is built-in. You can optionally add your own AbuseIPDB API key, enable blocklist.de feeds, or maintain a custom blacklist.
Bring your own AbuseIPDB API key. Set a minimum confidence threshold and limit. Click Save & Fetch to pull IPs immediately.
Select which attack feeds to subscribe to. No API key needed. Each feed covers the last 48 hours of reports from thousands of servers.
Add individual IPs, paste a list, or upload a file. Entries are merged with all other sources and deduplicated.
The Settings page lets you tune SikkerGuard's behavior. All settings have sensible defaults — you only need to change what matters for your setup.
Control how aggressive the blocking is. A higher score means fewer blocks but higher confidence. Default is 50.
Control how often SikkerGuard refreshes the blocklist and how often it reports blocked connections back to SikkerAPI. Contributor reporting is optional.
Add IPs or CIDR ranges that should never be blocked. SikkerGuard also auto-detects and protects your SSH session, gateway, DNS servers, and all RFC1918 private ranges.
Check that SikkerGuard is running and has loaded the blocklist.
# Check container status $ sudo docker compose ps NAME STATUS PORTS sikkerguard Up 2 minutes # Verify ipset is loaded $ sudo ipset list sikkerguard -t Name: sikkerguard Type: hash:ip Number of entries: 48219 # Check iptables rule $ sudo iptables -L INPUT -n | grep sikkerguard DROP all -- 0.0.0.0/0 0.0.0.0/0 match-set sikkerguard src # Health check $ curl -s http://localhost:8080/healthz OK
NET_ADMIN allows SikkerGuard to create and manage iptables rules and ipset entries. SYSLOG allows reading kernel firewall logs from /dev/kmsg to track blocked connections in real time. network_mode: host is required so the container operates on the host's network stack.
Yes. SikkerGuard uses its own ipset chain and doesn't touch other firewall rules. It complements Fail2Ban (proactive pre-blocking vs reactive log parsing) and works alongside UFW, firewalld, CSF, or CrowdSec.
SikkerGuard auto-whitelists your current SSH session IP, your gateway, DNS servers, and all RFC1918 private ranges. A connectivity test runs after every firewall update — if outbound internet breaks, the change is rolled back automatically. You can add additional IPs to the whitelist from settings.
Go to the Sources page in the dashboard. For AbuseIPDB, enter your own API key and set a confidence threshold. For blocklist.de, select which feed categories to enable (no key needed). Both are opt-in integrations you configure yourself.
SikkerGuard removes all its iptables rules and ipset entries on shutdown. Your firewall returns to its pre-SikkerGuard state. When it restarts, rules are re-applied from the last pulled blocklist. Data persists in the ./data directory next to your compose file.
Pull the latest image and recreate: docker compose pull && docker compose up -d. Your configuration, accounts, and data persist in the volume.
Need help? Check the full documentation, view plans, or reach out on GitHub.
SikkerGuard docs →