bd5rv/aprsc

By bd5rv

โ€ขUpdated about 2 months ago

Multi-arch APRS-IS server (AMD64/ARM64/ARMv7). 4.8MB download. Zero-config.

Image
Networking
Internet of things
0

1.2K

bd5rv/aprsc repository overview

โ aprsc - APRS-IS Server in Docker

Docker Image Size Docker Pulls GitHub

Lightweight, production-ready Docker image for aprscโ  - a high-performance APRS-IS (Automatic Packet Reporting System - Internet Service) server.

โ โœจ Features

  • ๐Ÿชถ Ultra-compact: Only 4.8 MB download (11.2 MB uncompressed)
  • ๐Ÿ—๏ธ Multi-architecture: Native support for AMD64, ARM64, and ARMv7 (Raspberry Pi ready!)
  • โšก Zero-configuration: Run without config files using environment variables
  • ๐Ÿ”’ Secure: Runs as non-root user with minimal Alpine Linux base
  • ๐ŸŒ Complete: Full APRS-IS server with web monitoring interface
  • ๐Ÿ“Š Production-ready: Health checks, resource limits, and proper signal handling
  • ๐Ÿ”ง Flexible: Support for both environment variables and configuration files

โ ๐Ÿš€ Quick Start

โ Run with defaults
docker run -d \
  -p 14580:14580 \
  -p 14501:14501 \
  bd5rv/aprsc:latest

Access web interface at http://localhost:14501/โ 

โ Run with custom callsign
docker run -d \
  -e APRSC_SERVER_ID=YOUR-CALL \
  -e APRSC_PASSCODE=12345 \
  -e APRSC_UPLINK_ENABLED=yes \
  -p 14580:14580 \
  -p 14501:14501 \
  bd5rv/aprsc:latest

Get your passcode at: https://apps.magicbug.co.uk/passcode/โ 

โ ๐Ÿ“ฆ Available Tags

  • latest - Latest stable release
  • 2.1.19-g6d55570 - Specific version with git hash
  • 2.1.19 - Semantic version
  • 2.1 - Major.minor version
  • 2 - Major version

โ ๐Ÿ—๏ธ Multi-Architecture Support

This image supports multiple CPU architectures with automatic platform detection:

ArchitecturePlatformDevices
AMD64linux/amd64Intel/AMD servers, desktops, laptops
ARM64linux/arm64Raspberry Pi 4/5, ARM servers, Apple Silicon
ARMv7linux/arm/v7Raspberry Pi 2/3, older ARM devices
โ Automatic Detection

Docker automatically selects the correct architecture for your device:

# On x86-64 server - pulls AMD64 image
docker pull bd5rv/aprsc:latest

# On Raspberry Pi 4 - pulls ARM64 image automatically
docker pull bd5rv/aprsc:latest

# On Raspberry Pi 3 - pulls ARMv7 image automatically
docker pull bd5rv/aprsc:latest
โ Raspberry Pi Quick Start

Perfect for APRS iGate on Raspberry Pi:

docker run -d \
  -e APRSC_SERVER_ID=YOUR-CALL \
  -e APRSC_PASSCODE=12345 \
  -e APRSC_UPLINK_ENABLED=yes \
  -p 14580:14580 \
  -p 14501:14501 \
  --restart unless-stopped \
  bd5rv/aprsc:latest

# Verify architecture
docker exec <container> uname -m
# Raspberry Pi 4/5: aarch64 (ARM64)
# Raspberry Pi 2/3: armv7l (ARMv7)

See: Multi-Architecture Guideโ 

โ ๐Ÿ”ง Configuration

โ Environment Variables
VariableDefaultDescription
APRSC_SERVER_IDNOCALLYour amateur radio callsign
APRSC_PASSCODE-1Server passcode (read-only with -1)
APRSC_MY_ADMINDocker UserAdministrator name
APRSC_MY_EMAILroot@localhostAdministrator email
APRSC_UPLINK_ENABLEDnoEnable upstream APRS-IS connection
APRSC_UPLINK_SERVERrotate.aprs2.netUpstream server address
APRSC_IGATE_PORT14580Client port
APRSC_HTTP_STATUS_PORT14501Web monitoring port

See full list: Environment Variables Guideโ 

โ Using Configuration File
docker run -d \
  -v ./aprsc.conf:/etc/aprsc/aprsc.conf:ro \
  -p 14580:14580 \
  -p 14501:14501 \
  bd5rv/aprsc:latest

โ ๐ŸŒ Ports

PortProtocolPurpose
14580TCP/UDPAPRS-IS client port (filtered)
10152TCP/UDPFull feed port (unfiltered)
8080UDPUDP packet submission
8080TCPHTTP position upload
14501TCPWeb status monitoring

โ ๐Ÿณ Docker Compose Example

version: '3.8'

services:
  aprsc:
    image: bd5rv/aprsc:latest
    container_name: aprsc
    restart: unless-stopped
    environment:
      - APRSC_SERVER_ID=YOUR-CALL
      - APRSC_PASSCODE=12345
      - APRSC_MY_ADMIN=Your Name
      - [email protected]
      - APRSC_UPLINK_ENABLED=yes
      - APRSC_UPLINK_SERVER=rotate.aprs2.net
    ports:
      - "14580:14580"
      - "14501:14501"
    volumes:
      - ./logs:/var/log/aprsc
      - aprsc-data:/var/run/aprsc/data
    healthcheck:
      test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://127.0.0.1:14501/"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

volumes:
  aprsc-data:

โ ๐Ÿ”— Connecting to APRS-IS Network

โ Read-Only Mode (No Authentication)
docker run -d \
  -e APRSC_UPLINK_ENABLED=yes \
  -e APRSC_UPLINK_TYPE=ro \
  -p 14580:14580 \
  -p 14501:14501 \
  bd5rv/aprsc:latest
โ Full Access Mode (With Authentication)
docker run -d \
  -e APRSC_SERVER_ID=N0CALL \
  -e APRSC_PASSCODE=12345 \
  -e APRSC_UPLINK_ENABLED=yes \
  -e APRSC_UPLINK_TYPE=full \
  -e APRSC_UPLINK_SERVER=asia.aprs2.net \
  -p 14580:14580 \
  -p 14501:14501 \
  bd5rv/aprsc:latest
โ Available Upstream Servers
  • rotate.aprs2.net - Global round-robin (recommended)
  • asia.aprs2.net - Asia region
  • euro.aprs2.net - Europe region
  • noam.aprs2.net - North America region

โ ๐Ÿงช Testing Connection

Test with telnet:

telnet localhost 14580

Then login:

user TEST pass -1 vers test 1.0

You should see APRS packets streaming immediately.

See: Testing Guideโ 

โ ๐Ÿ“Š Monitoring

โ Web Interface

Open http://localhost:14501/โ  in your browser to see:

  • Server runtime status
  • Connected clients list
  • Traffic statistics
  • Uplink status
โ JSON API
curl http://localhost:14501/status.json
โ Health Check
docker ps
# Look for "(healthy)" in STATUS column

โ ๐ŸŽฏ Use Cases

  • APRS iGate: Receive RF packets and gate to APRS-IS
  • APRS Server: Provide filtered feeds to APRS clients
  • APRS Hub: Central hub for local APRS network
  • Testing/Development: Test APRS applications locally
  • Read-Only Feed: Monitor APRS traffic without transmitting

โ ๐Ÿ’ป System Requirements

Minimal:

  • CPU: 0.5 cores
  • RAM: 128 MB
  • Disk: ~15 MB

Supported Platforms:

  • x86-64 (AMD64) - Intel/AMD servers and desktops
  • ARM64 (aarch64) - Raspberry Pi 4/5, ARM servers, Apple Silicon
  • ARMv7 (armv7l) - Raspberry Pi 2/3, older ARM devices

All platforms tested and production-ready!

โ ๐Ÿ“š Documentation

โ โš ๏ธ Important Notes

โ Default Configuration Warning

When running with default settings, you'll see:

WARNING: Using default callsign 'NOCALL'
WARNING: Using invalid passcode

This is normal for testing. For production use, set APRSC_SERVER_ID and APRSC_PASSCODE.

โ POSIX Capabilities Warning

You may see:

aprsc: Failed to apply initial POSIX capabilities: Operation not permitted

This is normal and can be safely ignored. The container still works perfectly. See FAQโ  for details.

โ ๐Ÿ› ๏ธ Troubleshooting

โ No data received?
  1. Check uplink is enabled: APRSC_UPLINK_ENABLED=yes
  2. Verify uplink connection: curl http://localhost:14501/status.json | jq '.uplinks'
  3. Check logs: docker logs <container-name>
โ Web interface shows 404?
  1. Ensure port 14501 is exposed
  2. Check health status: docker ps
  3. Verify with: curl http://localhost:14501/
โ Port conflicts?

Change host port mapping:

docker run -p 24580:14580 ...

โ ๐Ÿ“„ License

  • aprsc: Licensed under its original license
  • Docker configuration: MIT License

โ ๐Ÿค Contributing

Issues and Pull Requests welcome at: https://github.com/bd5rv/aprsc-dockerโ 

โ ๐Ÿท๏ธ Version Information

This image is based on:

  • aprsc: v2.1.19-g6d55570
  • Alpine Linux: 3.20
  • Image Size: 4.8 MB (download) / 11.2 MB (uncompressed)

Built with โค๏ธ for the Amateur Radio community

For detailed documentation, visit the GitHub repositoryโ 

Enjoy! 73! de BD5RV

Tag summary

Content type

Image

Digest

sha256:9ae38ef1dโ€ฆ

Size

4.8 MB

Last updated

about 2 months ago

docker pull bd5rv/aprsc