From 128b34d1c51b093dc496fa85601a9f8dba77c464 Mon Sep 17 00:00:00 2001 From: Josef Matondang Date: Wed, 2 Sep 2020 04:27:26 +0000 Subject: [PATCH] Initial commit --- build/aprsc/Dockerfile | 23 ++++++++ config/default/aprsc | 27 +++++++++ config/etc/aprsc.conf | 123 +++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 15 +++++ 4 files changed, 188 insertions(+) create mode 100644 build/aprsc/Dockerfile create mode 100644 config/default/aprsc create mode 100644 config/etc/aprsc.conf create mode 100644 docker-compose.yml diff --git a/build/aprsc/Dockerfile b/build/aprsc/Dockerfile new file mode 100644 index 0000000..82fd529 --- /dev/null +++ b/build/aprsc/Dockerfile @@ -0,0 +1,23 @@ +FROM debian:buster-slim + +RUN apt update && \ + apt install -y build-essential \ + debhelper \ + libc6 \ + zlib1g \ + adduser \ + libcap2-bin \ + libwww-perl \ + libjson-xs-perl \ + libevent-dev \ + git \ + lsb-release + +RUN git clone https://github.com/hessu/aprsc && \ + cd aprsc/src && \ + ./configure && \ + make make-deb -j4 && \ + cd .. && \ + apt install ./*.deb + +CMD service aprsc start && tail -F /opt/aprsc/logs/aprsc.log diff --git a/config/default/aprsc b/config/default/aprsc new file mode 100644 index 0000000..fecf767 --- /dev/null +++ b/config/default/aprsc @@ -0,0 +1,27 @@ +# +# STARTAPRSC: start aprsc on boot. Should be set to "yes" once you have +# configured aprsc. +# +STARTAPRSC="yes" + +# +# Additional options that are passed to the Daemon. +# Description of used options (don't change these unless +# you're sure what you're doing): +# -u aprsc: switch to user 'aprsc' as soon as possible +# -t /opt/aprsc: chroot to the given directory +# -f: fork to a daemon +# -e info: log at level info +# -o file: log to file +# -r logs: log files are placed in /opt/aprsc/logs +# -c etc/aprsc.conf: configuration file location +# +# Since the daemon chroots to /opt/aprsc, all paths are relative to +# that directory and the daemon cannot access any files outside +# the chroot. +# +# aprsc can log to syslog too, but that'd require bringing the +# syslog socket within the chroot. +# + +DAEMON_OPTS="-u aprsc -t /opt/aprsc -f -e info -o file -r logs -c etc/aprsc.conf" diff --git a/config/etc/aprsc.conf b/config/etc/aprsc.conf new file mode 100644 index 0000000..096b4df --- /dev/null +++ b/config/etc/aprsc.conf @@ -0,0 +1,123 @@ +# Configuration for aprsc, an APRS-IS server for core servers + +# Your unique server ID +ServerId NOCALL +# Passcode for the server ID +PassCode 0 +# Who is running this server? +MyAdmin "My Name, MYCALL" +# The email address where the admin can be reached +MyEmail email@example.com + +### Directories ######### +# Data directory (for persistent state files - currently none) +RunDir data + +# If logging to a file (-o file), enable built-in log rotation. +# LogRotate +# "LogRotate 10 5" keeps 5 old files of 10 megabytes each. +LogRotate 1000 1 + +### Intervals and timers ######### +# Interval specification format examples: +# 600 (600 seconds), or 600s, 5m, 2h, 1h30m, 1d3h15m24s, etc... + +# When no data is received from an upstream server in N seconds, switch to +# another server. +UpstreamTimeout 15s + +# When no data is received from a downstream server in N seconds, disconnect +ClientTimeout 48h + +### TCP listener ########## +# Listen tcp
+# socketname: any name you wish to show up in logs and statistics +# porttype: one of: +# fullfeed - everything, after dupe filtering +# igate - igate / client port with user-specified filters +# udpsubmit - UDP packet submission port (8080) +# dupefeed - duplicate packets dropped by the server +# options: +# filter "m/500" - force a filter for users connected here +# maxclients 100 - limit clients connected on this port +# acl etc/client.acl - match client addresses against ACL +# hidden - don't show the port in the status page +# +# If you wish to provide UDP service for clients, set up a +# second listener on the same address, port and protocol. +# +# The "::" is IPv6 "IN6ADDR_ANY", whereas "0.0.0.0" is same +# with IPv4. +# +# On FreeBSD you need to have separate listeners for IPv4 and +# IPv6. On Linux, just use :: alone - the IPv6 listener will +# catch the IPv4 connections just as well. +# +# Example of normal server ports for Linux, supporting both TCP and UDP, +# IPv4 and IPv6: +# +Listen "Full feed" fullfeed tcp :: 10152 hidden +Listen "" fullfeed udp :: 10152 hidden + +Listen "Client-Defined Filters" igate tcp :: 14580 +Listen "" igate udp :: 14580 + +#Listen "350 km from my position" igate tcp :: 20350 filter "m/350" +#Listen "" igate udp :: 20350 filter "m/350" + +Listen "UDP submit" udpsubmit udp :: 8080 + +### Uplink configuration ######## +# Uplink tcp
+# name: a name of the server or service you're connecting to +# type: one of: +# full - full feed +# ro - read-only, do not transmit anything upstream +# +# If you wish to specify multiple alternative servers, use multiple +# Uplink lines, one for each server. +# +# Normally a single line for the 'rotate' address is fine - it will connect +# to one of the servers in a random fashion and go for another one should +# the first one become unavailable. +# +#Uplink "Core rotate" full tcp rotate.aprs.net 10152 +#Uplink "Core rotate" ro tcp rotate.aprs.net 10152 + +# OPTIONAL: Bind source address before connecting to an uplink +# You can enter two addresses, one for IPv4 and one for IPv6 connections. +# Needed if you have multiple IP addresses on your server and only one +# of them is allowed to connect by the remote server. +#UplinkBind 127.0.0.1 +#UplinkBind ::1 + +### HTTP server ########## +# HTTPStatus port provides a status view to web browsers. +# IPv6+IPv4 support works slightly differently than in Listen: +# :: is "all addresses" for IPv6, 0.0.0.0 for IPv4, but +# :: only works if you actually have a global IPv6 address +# configured on the system. +# The example is for IPv4, change the address to :: if you have +# IPv6. For FreeBSD, or if you wish to support multiple specific +# ports/addresses, use multiple HTTPStatus directives for each. +HTTPStatus 0.0.0.0 14501 +# HTTPUpload port allows position uploads over HTTP +HTTPUpload 0.0.0.0 8080 + +### Environment ############ +# When running this server as super-user, the server can (in many systems) +# increase several resource limits, and do other things that less privileged +# server can not do. +# +# The FileLimit is resource limit on how many simultaneous connections and +# some other internal resources the system can use at the same time. +# If the server is not being run as super-user, this setting has no effect +# in case it is above what normal user can set. +# +FileLimit 10000 + +### Operator attention span qualification run ########### +# After configuring the rest of the settings, remove this bad command +# from the configuration file. It's here only to avoid starting the +# server up accidentally with an invalid configuration. +MagicBadness 42.7 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..c6c609c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.8' +services: + aprsc: + build: ./build/aprsc/. + volumes: + - ./config/default:/etc/default:rw + - ./config/etc:/opt/aprsc/etc/:rw + ports: + - 8080:8080 + - 10152:10152 + - 14501:14501 + - 14580:14580 + privileged: + true +