GithubHelp home page GithubHelp logo

ccmolik / aprsweb Goto Github PK

View Code? Open in Web Editor NEW
14.0 3.0 2.0 928 KB

run your own aprs web server, like a local aprs.fi

Dockerfile 0.10% Makefile 0.61% HTML 18.27% JavaScript 32.04% CSS 16.70% Go 32.27%
aprs golang leaflet ham-radio amateur-radio direwolf

aprsweb's Introduction

APRSWeb

APRSWeb connects to Direwolf (or any AGWPE-compatible server, in theory) and rendered received APRS frames onto a map in your web browser. aprsweb screenshot

Unlike other APRS software, APRSWeb's target is to render into a web browser. You can think of APRSWeb as a self-hosted version of https://aprs.fi, except it can run on hardware as modest as a Raspberry Pi.

It uses Twirp to serialize those frames into JSON or protobuf objects, so it also doubles as an HTTP API for your APRS frames.

Building

You'll need git, golang protoc-gen-twirp, and protoc per the Twirp guide.

Once you have everything installed, run make.

This will output aprsweb as an ARMv6 Linux binary, and aprsweb-native as whatever architecture/OS you're compiling on now.

Running

Set up Direwolf with a radio or an rtl_fm device. This exercise is left to the reader, but certainly can be run on a raspi co-locating this service.

Run ./aprsweb-native -p port -s server substituting port and server for the port and server of your AGWPE server.

If you set the environment variable DEBUG=1 aprsweb will log every packet with base64

Note that we use git rev-parse HEAD --short upon build so APRSWeb versions are exposed in HTTP headers.

An example Kubernetes deployment is included at aprsweb.yml for those with letencrypt and nginx-ingress running.

Development

I pipe the TNC test CD to Direwolf to play back synthetic packets, such as:

$ cat ~/direwolf.dummy
ADEVICE - null
CHANNEL 0

$ ffmpeg -i ~/TNC_Test_Ver-1.1.00.wav -f s16le -acodec pcm_s16le -ac 1 pipe: | direwolf -t 0 -r44100 -c ~/direwolf.dummy -

TODO

  • Provide an easier way to customize:
    • Map starting position
    • Map zoom
    • HTML template
  • Provide a map provider picker for off-net usage
  • Provide a filter for:
    • Displaying a specific station's checkins only
  • Automatically refresh the map every minute or so
  • Use specific icons for different station checkins (In progress)
  • Provide a way to swap out map API keys
  • Integrate twirp / pb generation into Makefile better
  • APRS test cd has some issues with Mic-E data, leading to screwed up lat/lng (specifically AC6VV-9)
  • Write better docs :)

aprsweb's People

Contributors

ccmolik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

aprsweb's Issues

APRSC connection

Hey there :)
Is it possible to connect directly to custom aprsc server on port 14580?

some trouble while "MAKE"

go-bindata -pkg bindata -o bindata/bindata.go -fs -prefix "static/" assets/...
go test -v ./...
cmd/aprsweb/aprsweb.go:11:9: cannot find package "github.com/ccmolik/aprsweb-proto/rpc/aprsweb" in any of:
/usr/lib/go-1.13/src/github.com/ccmolik/aprsweb-proto/rpc/aprsweb (from $GOROOT)
/home/waf/go/src/github.com/ccmolik/aprsweb-proto/rpc/aprsweb (from $GOPATH)
cmd/aprsweb/aprsweb.go:12:2: cannot find package "github.com/ccmolik/aprsweb/bindata" in any of:
/usr/lib/go-1.13/src/github.com/ccmolik/aprsweb/bindata (from $GOROOT)
/home/waf/go/src/github.com/ccmolik/aprsweb/bindata (from $GOPATH)
cmd/aprsweb/aprsweb.go:13:2: cannot find package "github.com/ccmolik/aprsweb/internal/aprswebtwirp" in any of:
/usr/lib/go-1.13/src/github.com/ccmolik/aprsweb/internal/aprswebtwirp (from $GOROOT)
/home/waf/go/src/github.com/ccmolik/aprsweb/internal/aprswebtwirp (from $GOPATH)
cmd/aprsweb/aprsweb.go:14:2: cannot find package "github.com/ccmolik/aprsweb/internal/packethandler" in any of:
/usr/lib/go-1.13/src/github.com/ccmolik/aprsweb/internal/packethandler (from $GOROOT)
/home/waf/go/src/github.com/ccmolik/aprsweb/internal/packethandler (from $GOPATH)
cmd/aprsweb/aprsweb.go:15:2: cannot find package "github.com/ccmolik/aprsweb/internal/packetstore" in any of:
/usr/lib/go-1.13/src/github.com/ccmolik/aprsweb/internal/packetstore (from $GOROOT)
/home/waf/go/src/github.com/ccmolik/aprsweb/internal/packetstore (from $GOPATH)
internal/packethandler/packethandler.go:15:2: cannot find package "github.com/ccmolik/aprsweb/packet" in any of:
/usr/lib/go-1.13/src/github.com/ccmolik/aprsweb/packet (from $GOROOT)
/home/waf/go/src/github.com/ccmolik/aprsweb/packet (from $GOPATH)
packet/packet.go:12:2: cannot find package "github.com/shopspring/decimal" in any of:
/usr/lib/go-1.13/src/github.com/shopspring/decimal (from $GOROOT)
/home/waf/go/src/github.com/shopspring/decimal (from $GOPATH)
make: *** [Makefile:18: test] Error 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.