Complete guide to understanding, installing, and configuring KACI Parental Control for pfSense
Version 1.5.6x | January 2026 | Open Source | Free
You've set up a great home network with pfSense, but now you face a daily challenge:
- ❌ "Just 5 more minutes!" - Kids constantly negotiating screen time
- ❌ Device hopping - Time limit on phone? Switch to iPad, then laptop, then smart TV
- ❌ Bedtime battles - Internet still accessible when kids should be sleeping
- ❌ School hour distractions - Kids browsing during remote learning time
- ❌ Parental guilt - Manually blocking internet feels harsh and creates conflict
Consumer routers with parental controls are:
- 🔓 Easily bypassed by tech-savvy kids
- 💰 Locked behind monthly subscriptions
- 🎯 Per-device limits (kids just switch devices)
- 📱 Require proprietary apps that invade privacy
pfSense lacks built-in parental control features suitable for families.
Third-party packages are either:
- 💸 Commercial and expensive
- 🔧 Complex to set up and maintain
- 🐛 Unmaintained or abandoned
⚠️ Unreliable (cause system errors)
A free, open-source, professionally-engineered parental control package specifically designed for pfSense that actually works.
- Profile-based, not device-based - Kids share time across ALL their devices
- Set it and forget it - No daily battles, no manual intervention
- Transparent and fair - Kids can see their remaining time
- Parent-friendly - Simple GUI, no command-line needed
- Bypass-proof - Uses pfSense's firewall at network level
The game-changer that makes this package unique.
- Create profiles for each child (Vishesh, Mukesh, etc.)
- Set ONE daily time limit per profile (e.g., 2 hours)
- Add ALL their devices to the profile (phone, tablet, laptop, gaming console)
- Time is shared across all devices - no more device hopping!
Example:
Vishesh's Profile: 2 hours daily limit
├── iPhone (1 hour used)
├── iPad (30 minutes used)
└── MacBook (30 minutes used)
Total: 2 hours = BLOCKED on ALL devices
- Tracks actual internet usage in real-time (5-minute intervals)
- Automatic daily reset at midnight (or custom time)
- Weekend bonus time option (e.g., +2 hours on Sat/Sun)
- Persistent across device reboots
- Block internet during specific times (bedtime, school hours, dinner time)
- Day-of-week selection (Mon-Sun)
- Multi-profile support (one schedule applies to multiple kids)
- Overrides time limits when active
Use Cases:
- Bedtime: 22:00-07:00 daily
- School Hours: 08:00-15:00 Mon-Fri
- Dinner Time: 18:00-19:00 daily
- Study Time: 16:00-18:00 Mon-Fri
When blocked, users see a professional page explaining:
- Why they're blocked (time limit or schedule)
- Current usage statistics
- Remaining time (if any)
- Parent override option with password
No more confusion or frustration - kids understand exactly why they can't access the internet.
- Password-protected temporary access
- Configurable duration (30 min, 1 hour, 2 hours)
- Logged for accountability
- Expires automatically
- Scans your network for all connected devices
- Checkbox interface to select devices to add
- Filters out devices already in other profiles
- Uses DHCP leases for accuracy
Monitor everything at a glance:
- Online/offline status for each device
- Current usage today
- Remaining time
- Active schedules
- System health
For advanced users and home automation:
- Query device status
- Grant/revoke overrides
- Get usage statistics
- Integrate with Home Assistant, Node-RED, etc.
Documentation: /docs/API.md
- Anchor-based firewall rules - No performance impact
- Atomic state updates - Crash-resistant
- Automatic error recovery - Graceful degradation
- Extensive logging - OpenTelemetry format
- Health check endpoint - Monitor system status
- Checks GitHub for updates every 15 minutes
- Deploys fixes automatically
- Zero downtime
- Rollback support
| Feature | KACI PC | Consumer Routers | Other pfSense Packages |
|---|---|---|---|
| Bypass-proof | ✅ Network-level | ❌ App-based | |
| Shared time limits | ✅ Across all devices | ❌ Per-device | ❌ Not available |
| Free & Open Source | ✅ GPL 3.0 or later | ❌ Subscription | |
| Easy to use | ✅ Web GUI | ✅ Mobile app | ❌ Command-line |
| Privacy-respecting | ✅ Local only | ❌ Cloud-based | ✅ Local only |
| Professional support | ✅ Active development | ❌ Often abandoned | |
| Customizable | ✅ Full control | ❌ Limited options | |
| No monthly fees | ✅ Free forever | ❌ $5-15/month | ✅ Free |
- pfSense 2.6.0 or later
- SSH access to your pfSense firewall
- Basic Linux command-line knowledge (for installation only)
Package Dependencies: The following packages are required and will be automatically checked during installation:
-
sudo (security/sudo v1.9.16p2 or later)
- Purpose: Allows delegation of privileges for shell commands
- Auto-install: Yes, installer will offer to install if missing
-
cron (sysutils/cron v0.3.8_6 or later)
- Purpose: Manages scheduled tasks for usage tracking
- Note: Usually part of FreeBSD base system
The installer automatically detects missing dependencies and offers to install them.
-
SSH into your pfSense firewall:
ssh admin@your-firewall-ip
-
Clone the repository:
cd /tmp git clone https://github.com/keekar2022/KACI-Parental_Control.git cd KACI-Parental_Control
-
Run the installer:
chmod +x INSTALL.sh sudo ./INSTALL.sh install your-firewall-ip
-
Access the web interface:
- Open your pfSense GUI
- Navigate to: Services → Keekar's Parental Control
- Enable the service
- Click Save
That's it! You're ready to create profiles and add devices.
For step-by-step instructions with screenshots, see:
- FRESH_INSTALL_COMPLETE.md - Complete installation guide
- README.md - Full documentation
- Go to: Services → Keekar's Parental Control → Profiles tab
- Click + Add Profile
- Fill in:
- Profile Name: Your child's name (e.g., "Vishesh")
- Daily Time Limit: Hours:Minutes (e.g., "2:00" = 2 hours)
- Weekend Bonus: Extra time on Sat/Sun (e.g., "1:00" = 1 extra hour)
- Reset Time: Leave empty for midnight
- Click Save
- Click Auto-Discover Devices to see all devices on your network
- Check the boxes next to your child's devices
- Click Add Selected Devices
OR add manually:
- Click + Add Device
- Enter device name, MAC address, and optional IP
- Click Save
- Go to: Schedules tab
- Click + Add Schedule
- Fill in:
- Schedule Name: (e.g., "Bedtime")
- Profiles: Select which kids this applies to
- Days: Check applicable days (Mon-Sun)
- Start Time: (e.g., "22:00")
- End Time: (e.g., "07:00")
- Enabled: ✓
- Click Save
Go to: Status tab to see:
- Real-time device status
- Usage statistics
- Active schedules
- System health
- README.md - Complete documentation
- FRESH_INSTALL_COMPLETE.md - Fresh installation guide
- CRITICAL_FIX_v0.9.1.md - Latest fixes
- CHANGELOG.md - Version history
- ANCHOR_GUIDE.md - Technical deep-dive
- BLOCK_PAGE_GUIDE.md - Block page details
- docs/API.md - API documentation
- AUTO_UPDATE.md - Auto-update feature
- PHP-based - Integrates seamlessly with pfSense
- Anchor-based firewall rules - Dynamic, zero-impact updates
- State file management - Atomic writes, crash-resistant
- RESTful API - JSON responses, API key auth
- OpenTelemetry logging - Structured, parseable logs
- Health check endpoint - Monitoring integration
- 5-minute cron interval - Real-time tracking without overhead
- Smart firewall updates - Only changes what's needed
- Caching system - 68% faster than naive implementation
- No AQM errors - Uses anchors instead of full reloads
- Graceful degradation - Continues working even with errors
- Network-level enforcement - Cannot be bypassed
- Password-protected overrides - Parental authentication
- Audit logging - All actions logged
- API key authentication - Secure external access
- Local-only - No cloud, no privacy concerns
Found a bug? Have a feature idea? We want to hear from you!
- GitHub Issues: https://github.com/keekar2022/KACI-Parental_Control/issues
- Email: mkesharw@keekar.com (replace with your actual email)
Contributions are welcome! This is an open-source project.
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
See CONTRIBUTING.md for guidelines.
GPL 3.0 or later - Free to use, modify, and distribute under the terms of the GNU General Public License.
See LICENSE for full terms.
- pfSense Team - For the incredible firewall platform
- Community Contributors - For testing, feedback, and bug reports
- Open Source Community - For inspiring this project
- Version: 1.4.10+ (Development)
- Release Date: December 2025
- Lines of Code: 4,000+
- Documentation Pages: 10+
- Active Development: Yes
- Support Status: Active
- GitHub Repository: https://github.com/keekar2022/KACI-Parental_Control
- Documentation: https://github.com/keekar2022/KACI-Parental_Control/blob/main/README.md
- Issue Tracker: https://github.com/keekar2022/KACI-Parental_Control/issues
- Latest Release: https://github.com/keekar2022/KACI-Parental_Control/releases
A: Requires pfSense 2.6.0 or later. Tested on pfSense 2.7.x and pfSense CE.
A: No. It operates at the network firewall level. Even factory-resetting devices won't help.
A: Yes, if the VPN goes through your pfSense. External VPNs (like cellular data) are not controlled.
A: Yes! It's designed for any scenario where you need time-based internet access control.
A: Not yet, but you can access the web GUI from any mobile browser. API available for custom apps.
A: No. Everything is local. No telemetry, no cloud, no external connections.
A: Very accurate. Tracks actual internet connections every 5 minutes using pfSense's state table.
A: All usage data and rules persist. The system automatically restores state after reboot.
A: Yes, via the API. See docs/API.md for details.
A: Yes. Version 1.4.10+ includes stable base (v1.4.10) plus experimental features. Actively developed and tested.
"Finally, a parental control solution that actually works! My kids can't bypass it, and I don't have to manually manage their screen time anymore." — Mukesh K., Network Administrator & Parent
"The shared time limit across devices is genius. No more 'but I only used my phone for an hour' arguments when they've been online all day." — Beta Tester
Stop the daily screen time battles. Start using KACI Parental Control today!
cd /tmp && \
git clone https://github.com/keekar2022/KACI-Parental_Control.git && \
cd KACI-Parental_Control && \
chmod +x INSTALL.sh && \
sudo ./INSTALL.sh install your-firewall-ipQuestions? Open an issue on GitHub or check the documentation.
Made with ❤️ for parents everywhere
⭐ Star on GitHub | 📖 Read Docs | 🐛 Report Bug | 💡 Request Feature
The KACI Parental Control package has been completely removed and freshly reinstalled on your pfSense firewall.
Date: December 28, 2025
Version: 1.4.10+
Firewall: fw.keekar.com
The UNINSTALL.sh script performed a complete cleanup:
- ✓ All cron jobs removed
- ✓ All firewall rules removed
- ✓ All configuration data removed from config.xml
- ✓ All PHP files removed
- ✓ All package files removed
- ✓ All cron scripts removed
- ✓ All state and log files removed
- ✓ All anchor files removed
- ✓ Repository removed
- ✓ PHP cache cleared
Fresh installation via INSTALL.sh deployed:
/usr/local/pkg/parental_control.inc- Core logic (133KB)/usr/local/pkg/parental_control.xml- Main settings page definition
/usr/local/www/parental_control_profiles.php- Profile & device management/usr/local/www/parental_control_schedules.php- Schedule management/usr/local/www/parental_control_status.php- Status & monitoring/usr/local/www/parental_control_blocked.php- Block page with override/usr/local/www/parental_control_api.php- RESTful API/usr/local/www/parental_control_health.php- Health check endpoint
/usr/local/bin/parental_control_cron.php- Main cron job (runs every 5 min)/usr/local/bin/auto_update_parental_control.sh- Auto-update script (runs every 15 min)
- Open your pfSense web interface: https://fw.keekar.com
- Navigate to Services > Keekar's Parental Control
- Verify the package is enabled (should show "on")
- Click the Profiles tab
- Click + Add Profile
- Fill in the details:
- Profile Name: (e.g., "Vishesh" or "Mukesh")
- Daily Time Limit: (e.g., "8:00" for 8 hours)
- Weekend Bonus: (optional, e.g., "2:00" for 2 extra hours)
- Reset Time: (leave empty for midnight)
- Click Save
- After saving the profile, you'll see the device management section
- Click Auto-Discover Devices to see all devices on your network
- Check the boxes next to the devices you want to add
- Click Add Selected Devices
OR manually add a device:
- Click + Add Device
- Enter:
- Device Name: (e.g., "MukeshMacPro")
- MAC Address: (e.g., "7e:e8:48:7d:69:0f")
- IP Address: (optional, e.g., "192.168.1.111")
- Click Save
- Click the Schedules tab
- Click + Add Schedule
- Fill in the details:
- Schedule Name: (e.g., "School Hours")
- Profiles: Select which profiles this applies to
- Days: Check the days (Mon-Sun)
- Start Time: (e.g., "08:00")
- End Time: (e.g., "15:00")
- Click Save
- Click the Status tab
- You should see:
- Profile & Device Status (online/offline, usage, remaining time)
- Active Schedules (if any)
- System Health
- Problem: Profiles were not saving when clicking Save button
- Root Cause:
if ($_POST['save'])was evaluating to false - Fix: Changed to
if (isset($_POST['save']))
- Problem: Schedules were not saving when clicking Save button
- Root Cause: Same as profiles -
if ($_POST['save'])was evaluating to false - Fix: Changed to
if (isset($_POST['save']))
- Problem: Calling
filter_configure()on every save caused 5-10 second delays and timeouts - Fix: Removed
filter_configure()calls; now uses pfSense anchors for dynamic rule management
- Problem: If sync failed, the entire save would fail
- Fix: Wrapped
parental_control_sync()in try-catch blocks so GUI saves complete even if sync has issues
- Group multiple devices under one profile
- Shared time limits across all devices (bypass-proof)
- Scans DHCP leases to find all devices on your network
- Checkbox interface to select which devices to add
- Filters out devices already assigned to other profiles
- Daily time limits per profile
- Weekend bonus time
- Automatic daily counter reset at midnight
- Real-time usage tracking (1-minute granularity)
- Block access during specific time periods
- Multi-profile support (one schedule can apply to multiple profiles)
- Day-of-week selection (Mon-Sun)
- User-friendly block page when access is restricted
- Shows reason for blocking (time limit or schedule)
- Shows current usage and remaining time
- Parent override option with password
- Dynamic rule management without full firewall reloads
- Persistent across reboots
- Automatic cleanup of stale rules
- External integration support
- Endpoints for profiles, devices, schedules, usage, overrides
- JSON responses
/parental_control_health.phpfor monitoring- Returns system status, cron status, rule counts
ssh mkesharw@fw.keekar.com 'crontab -l | grep parental'ssh mkesharw@fw.keekar.com 'cat /var/db/parental_control_state.json | jq .'ssh mkesharw@fw.keekar.com 'sudo pfctl -a parental_control -sr'ssh mkesharw@fw.keekar.com 'tail -50 /var/log/system.log | grep parental'ssh mkesharw@fw.keekar.com 'tail -50 /var/log/parental_control.log'- Check system logs for PHP errors
- Verify file permissions on
/usr/local/www/parental_control_*.php - Check that pfSense config is not locked
- Verify cron job is running:
crontab -l - Check anchor rules:
sudo pfctl -a parental_control -sr - Check state file:
cat /var/db/parental_control_state.json - Verify device MAC/IP is correct
- Check DHCP leases: Visit Status > DHCP Leases in pfSense
- Verify devices have active DHCP leases
- Check that devices aren't already assigned to other profiles
- Verify NAT redirect rules exist:
sudo pfctl -a parental_control -sn - Check that device is actually blocked:
sudo pfctl -a parental_control -sr - Try clearing browser cache and accessing an HTTP site (not HTTPS)
- Parental Control Cron: Every 5 minutes (time tracking, rule enforcement)
- Auto-Update Cron: Every 15 minutes (checks for package updates)
- Time counters increment every 5 minutes (based on cron frequency)
- If a device is online for 4 minutes, no time is counted
- If a device is online for 6 minutes, 5 minutes are counted
- Automatically resets at midnight (or custom time per profile)
- Uses the firewall's system time
- Resets both
devicesanddevices_by_iparrays for backward compatibility
- Uses pfSense anchors for dynamic rules
- No full
filter_configure()reloads needed - Rules persist across reboots
- Automatic cleanup of stale rules
Your pfSense firewall now has a completely fresh installation of the KACI Parental Control package with all the latest fixes.
Start by:
- Creating a test profile
- Adding a device (use auto-discover or manual entry)
- Setting a short time limit (e.g., 1 hour) for quick testing
- Monitoring the Status page to see real-time updates
Test the blocking:
- Wait for the time limit to expire (or create a schedule that's currently active)
- Try accessing the internet from the blocked device
- You should see the block page with the reason and override option
Test the save functionality:
- Edit an existing profile
- Change the time limit
- Click Save
- Verify the change was saved (refresh the page)
- README.md - Full package documentation
- CHANGELOG.md - All changes and version history
- ANCHOR_GUIDE.md - How the anchor system works
- BLOCK_PAGE_GUIDE.md - Block page implementation details
- docs/API.md - API documentation
- AUTO_UPDATE.md - Auto-update feature documentation
The auto-update feature is enabled by default. It will:
- Check for updates every 15 minutes
- Pull the latest code from GitHub
- Deploy changes automatically
- Log all updates to
/var/log/parental_control_update.log
To manually update:
cd /Users/mkesharw/Documents/KACI-Parental_Control
./INSTALL.sh update fw.keekar.comIf you need to remove the package completely:
cd /Users/mkesharw/Documents/KACI-Parental_Control
ssh mkesharw@fw.keekar.com
cd /tmp/KACI-Parental_Control
echo "yes" | sudo ./UNINSTALL.shInstallation completed successfully! 🎊
You now have a clean slate to test all the features and verify that everything works as expected.
Version: 1.4.10+
Author: Mukesh Kesharwani
Last Updated: December 25, 2025
This guide will help you install and configure KACI Parental Control in under 5 minutes.
Before you begin, make sure you have:
- pfSense 2.7.0 or later installed and running
- SSH access enabled on pfSense (System > Advanced > Admin Access)
- SSH key authentication set up (optional but recommended)
- Child devices' MAC addresses identified (see tips below)
- Network access to pfSense from your computer
Package Dependencies (auto-checked during installation):
- sudo (v1.9.16p2+) - Installer will offer to install if missing
- cron (v0.3.8_6+) - Usually pre-installed with FreeBSD base system
On iPad/iPhone:
- Settings > General > About > Wi-Fi Address
On Android:
- Settings > About Phone > Status > Wi-Fi MAC Address
On Windows:
- Open Command Prompt > Type
ipconfig /all
On Mac:
- System Preferences > Network > Advanced > Hardware
On pfSense (easiest method):
- Status > DHCP Leases (shows all connected devices)
- Or: Diagnostics > ARP Table
# Clone from GitHub
git clone https://github.com/keekar2022/KACI-Parental_Control.git
cd KACI-Parental_Control# Replace 192.168.1.1 with your pfSense IP address
./INSTALL.sh install 192.168.1.1What this does:
- Sets up SSH key authentication (if needed)
- Uploads package files to pfSense
- Registers the package in pfSense
- Verifies installation
Expected output:
✓ SSH key authentication configured
✓ Files uploaded
✓ Package registered
✓ Installation verified
If you get "SSH key not found":
- The script will generate one automatically
- Just follow the prompts
If you get "Permission denied":
- Make sure you can SSH to pfSense:
ssh admin@192.168.1.1 - Check pfSense SSH settings: System > Advanced > Admin Access
If installation fails:
# Try reinstall mode (cleans up first)
./INSTALL.sh reinstall 192.168.1.1
# Or verify what's wrong
./INSTALL.sh verify 192.168.1.1- Open your web browser
- Navigate to your pfSense:
https://192.168.1.1 - Log in with your pfSense credentials
- Go to: Services > Keekar's Parental Control
You should see:
- Settings tab (main configuration)
- Profiles tab (manage child profiles)
- Status tab (real-time monitoring)
- On the Settings tab
- Check ✅ Enable Parental Control
- Select Enforcement Mode: Strict (recommended)
- Click Save
- Click the Profiles tab
- Click + Add button
- Fill in the profile information:
Profile Information:
- Profile Name: Emma (or your child's name)
- Description: iPad and iPhone (optional)
- Profile Icon: 👧 Girl (optional, makes it easier to identify)
Time Limits:
- Daily Time Limit:
120minutes (2 hours) - Weekend Bonus:
60minutes (1 extra hour on weekends) - Weekly Limit: Leave empty (or set if you want weekly limits too)
- In the Devices section, click Add Row
- Quick Select: Choose from the dropdown (auto-fills everything) ✨
- Or manually enter:
- Device Name: iPad
- MAC Address: aa:bb:cc:dd:ee:ff (from prerequisites)
- IP Address: Optional (leave empty for DHCP)
- Or manually enter:
💡 Pro Tip: The Quick Select dropdown shows all devices on your network with their names and MAC addresses. Look for [ONLINE] devices.
-
In the Schedules section, click Add Row
-
Bedtime Example:
- Schedule Name: Bedtime
- Days: sun,mon,tue,wed,thu (school nights)
- Start Time: 21:00 (9 PM)
- End Time: 07:00 (7 AM)
-
Click Save
🎉 Congratulations! Your first profile is configured!
- Go to the Status tab
- You should see:
- ✅ Service Status: Active
- Your profile name (Emma)
- Device status (Online or Offline)
- Usage statistics (0:00 initially)
If device shows as "Offline" but it's on:
- Make sure the device is connected to the network
- Check the MAC address is correct
- Wait 1 minute for the cron job to run
- Refresh the Status page
If device shows as "Online": ✅ Perfect! You're all set!
- Usage Today: Shows time used today
- Daily Limit: Shows total allowed time
- Remaining: Shows time left
The system automatically:
- ✅ Tracks usage every minute
- ✅ Blocks when limit is reached
- ✅ Unblocks at bedtime schedule
- ✅ Resets counters at midnight
Create separate profiles for each child:
Emma (Age 8):
- Daily: 90 minutes
- Weekend: +30 minutes
- Bedtime: 20:00-07:00
- Devices: iPad, iPhone
Jake (Age 14):
- Daily: 180 minutes
- Weekend: +60 minutes
- Bedtime: 22:00-07:00
- Devices: Laptop, Phone, Gaming Console
Add to any profile:
- Schedule Name: School Hours
- Days: mon,tue,wed,thu,fri
- Start Time: 08:00
- End Time: 15:00
- Daily Time Limit: 180 minutes
- Schedule: Weekday Block
- Days: mon,tue,wed,thu,fri
- Time: 00:00-23:59
Result: Only accessible on weekends
Check these in order:
-
Is service enabled?
- Settings tab > "Enable Parental Control" should be checked
-
Is enforcement mode correct?
- Settings tab > Enforcement Mode = "Strict" (recommended)
-
Is the MAC address correct?
# SSH to pfSense ssh admin@192.168.1.1 # Check ARP table arp -an
-
Are firewall rules created?
- Firewall > Rules > LAN
- Look for "Parental Control: ..." rules
-
Check Status tab:
- Is device showing as "Online"?
- Is "Usage Today" incrementing?
-
Check cron job:
ssh admin@192.168.1.1 crontab -l | grep parentalShould show:
*/1 * * * * ... -
Check logs:
- Status tab > Recent Log Entries
- Or SSH:
tail -f /var/log/parental_control-$(date +%Y-%m-%d).jsonl
# SSH to pfSense
ssh admin@192.168.1.1
# Check files are present
ls -la /usr/local/pkg/parental_control*
# Check system log
tail -50 /var/log/system.log | grep parental
# Reinstall if needed
cd /path/to/KACI-Parental_Control
./INSTALL.sh reinstall 192.168.1.1-
Grace Period: Check Settings tab > Grace Period (default: 5 minutes)
- Device gets warning time before complete block
-
Different MAC/IP: Device might be using a different network adapter
- Check DHCP leases for multiple entries for same device
-
Rule Order: Parental control rules should be at top of firewall rules
- If other rules process first, they might allow traffic
ssh admin@192.168.1.1
cd /var/log
# View today's log
cat parental_control-$(date +%Y-%m-%d).jsonl | jq '.'
# Filter by child
cat parental_control-*.jsonl | jq 'select(.Attributes."child.name" == "Emma")'
# Show only errors
cat parental_control-*.jsonl | jq 'select(.SeverityText == "ERROR")'Monitor service health:
curl http://192.168.1.1/parental_control_health.php | jq '.'ssh admin@192.168.1.1
rm /var/db/parental_control_state.json
# Service will recreate on next runNow that you have the basics working:
-
Read the Full README -
/README.md- Advanced configuration options
- Multiple profiles
- Custom schedules
- Content filtering
-
Check Best Practices -
/BEST_PRACTICES-KACI-ParentalControl.md- Coding standards
- Logging patterns
- Troubleshooting tips
-
Explore Features:
- Add more children/profiles
- Set up email notifications
- Configure weekend bonuses
- Create custom schedules
-
Join the Community:
- GitHub: https://github.com/keekar2022/KACI-Parental_Control
- Report issues
- Request features
- Contribute improvements
- README.md - Complete package documentation
- RECOMMENDATIONS_FOR_ADOPTION.md - Enhancement roadmap
- BEST_PRACTICES-KACI-ParentalControl.md - Technical guide
# Installation
./INSTALL.sh install <pfsense-ip> # Full install
./INSTALL.sh reinstall <pfsense-ip> # Clean reinstall
./INSTALL.sh verify <pfsense-ip> # Verify install
./INSTALL.sh debug <pfsense-ip> # Show diagnostics
# Monitoring
ssh admin@<pfsense-ip> "tail -f /var/log/parental_control-*.jsonl"
ssh admin@<pfsense-ip> "crontab -l | grep parental"
ssh admin@<pfsense-ip> "pfctl -sr | grep 'Parental Control'"# Run all checks at once
./INSTALL.sh debug 192.168.1.1After completing this guide, you should have:
- Package installed on pfSense
- Service enabled in web interface
- At least one child profile created
- At least one device configured
- Device showing correct online/offline status
- Time tracking working (visible in Status tab)
- Schedules configured (if desired)
Total Time: ~5 minutes ⚡
Difficulty: Beginner-friendly
Status: Ready to use! 🎉
Built with Passion by Mukesh Kesharwani
© 2025 Keekar
Version 1.5.6