How to Run aprsc APRS-IS Server on FreeBSD

Running an APRS-IS server with aprsc on FreeBSD is a powerful way to contribute to the APRS network or run your own regional server. Below I’ll walk you through a solid example configuration based on a working aprsc.conf file with explanations for each section.


Understanding the aprsc.conf File

Here’s a typical aprsc.conf you might use — based on your shared config:

# Unique server ID for this APRS server
ServerId   9M2PJU

# Passcode for this server ID, assigned via the APRS passcode generator
PassCode   12345

# Administrator contact info
MyAdmin    "Piju, 9M2PJU"
MyEmail    9m2pju@hamradio.my

### Directories
# Directory to store persistent data, such as state and logs
RunDir /usr/local/piju/aprsc/data

# Log rotation: max file size (MB) and number of files
LogRotate 100 50

### Intervals and timeouts
# How long to wait for upstream server data before switching
UpstreamTimeout 5s

# How long to wait before disconnecting a client due to inactivity
ClientTimeout 48h

### TCP/UDP listeners
# Listen on both IPv4 and IPv6 for various port types

Listen "Full feed" fullfeed tcp :: 10152
Listen ""          fullfeed udp :: 10152
Listen "Full feed" fullfeed tcp 0.0.0.0 10152
Listen ""          fullfeed udp 0.0.0.0 10152

Listen "Client-Defined Filters" igate tcp :: 14580
Listen ""                  igate udp :: 14580
Listen "Client-Defined Filters" igate tcp 0.0.0.0 14580
Listen ""                  igate udp 0.0.0.0 14580

Listen "UDP submit" udpsubmit udp :: 8080

### Uplink configuration
# Connect as a full feed to the APRS core network
Uplink "Core rotate" full tcp rotate.aprs.net 10152

### HTTP server for status and uploads
HTTPStatus 0.0.0.0 14501
HTTPUpload 0.0.0.0 8080
HTTPStatusOptions ShowEmail=1

Key Configuration Notes

ServerId & PassCode

  • ServerId is your unique server identifier visible on APRS networks. Use your callsign or a distinct tag.
  • PassCode must match your ServerId and be generated from a trusted APRS passcode generator (e.g., https://pass.hamradio.my).

Directories and Logs

  • RunDir points to where persistent state files and caches are stored — ensure this directory exists and is writable by the aprsc user.
  • LogRotate helps keep logs manageable, rotating files after hitting size limits.

Listeners

  • You must listen on TCP and UDP ports on both IPv4 (0.0.0.0) and IPv6 (::).
  • The fullfeed ports (10152) provide a full stream of APRS data (filtered for duplicates).
  • The igate ports (14580) are for clients like digipeaters, iGates, or APRS software that connect with filters they define.
  • udpsubmit on port 8080 allows lightweight position uploads over UDP.
  • Your server connects upstream to the main APRS backbone via rotate.aprs.net on port 10152 with a full feed.
  • The full keyword means your server both receives and forwards data upstream.

HTTP Server

  • HTTPStatus provides a web interface with connection stats and server status on port 14501.
  • HTTPUpload allows users to upload position data via HTTP POST on port 8080.
  • ShowEmail=1 optionally shows the admin email on the status page.

Preparing FreeBSD for aprsc

  1. Create directories:
mkdir -p /usr/local/piju/aprsc/data
chown -R aprscuser:wheel /usr/local/piju/aprsc

Replace aprscuser with the user running aprsc.

  1. Firewall rules:
    Allow inbound TCP and UDP on ports 10152, 14580, 8080, and 14501.
  2. Run aprsc:
/usr/local/sbin/aprsc -f /path/to/aprsc.conf
  1. Check logs for errors in /var/log or wherever configured.

Final Tips

  • Always generate your PassCode for your ServerId; don’t guess it.
  • For production, run aprsc as a dedicated user with limited permissions.
  • Monitor uptime and client connections via the HTTPStatus web page.
  • Consider automatic service management with an rc.d script for FreeBSD.

Summary

This config example is verified for current aprsc versions and is fully compatible with FreeBSD’s networking model. You have IPv4/IPv6 dual-stack listeners, client and uplink connections, and HTTP monitoring — all essentials for a robust APRS-IS server.

Post Comment

You May Have Missed