Skip to content

tcort/callsigns

Repository files navigation

Deprecated

This project has ended. I've taken down the website and ceased development of this application. I'm leaving the code up on github in the hope that it's useful for someone. Enjoy looking at this little piece of history.


callsigns

This is the code that powers callsigns.ca. It started with the simple desire for a simple mobile friendly way of searching the Canadian Callsign Database and ended with me developing my own website.

Features

  • mobile friendly design that also works on the desktop and in the terminal
  • bilingual user interface (English and French)
  • no advertisements nor any form of monetization (strictly non-commercial)
  • no login required to access any part of the site
  • no social media buttons to distract you
  • no cookies beyond an ephemeral session cookie for language preference
  • free and open source code

Requirements

  • systemd
  • iptables
  • nginx
  • openssl
  • mysql
  • wget
  • unzip
  • node.js
  • npm
  • letsencrypt

Installation

Grab the source code:

mkdir -p /var/node && cd /var/node
git clone git://github.com/tcort/callsigns.git && cd callsigns

Install the dependencies:

npm install

Configure iptables:

iptables-restore < ./etc/iptables/rules.v4
ip6tables-restore < ./etc/iptables/rules.v6
apt-get install iptables-persistent

Configure:

$EDITOR config.json

Populate the database:

/var/node/callsigns/db/refresh.sh

Add a cron job to refresh the database:

crontab -e
15 1   *   *   *   /var/node/callsigns/db/refresh.sh >/dev/null 2>&1

Configure rsyslog:

sudo -e /etc/rsyslog.conf
local5.*                        /var/log/callsigns.log
sudo service rsyslog restart
logger -p local5.info "Test"

Get SSL Certificates:

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --agree-dev-preview --server \
    https://acme-v01.api.letsencrypt.org/directory certonly

Generate DHE Parameters:

openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

Configure nginx:

cp /var/node/callsigns/etc/nginx/sites-available/callsigns.ca /etc/nginx/sites-available/callsigns.ca
$EDITOR /etc/nginx/sites-available/callsigns.ca
systemctl restart nginx

Configure the service:

cp /var/node/callsigns/etc/systemd/system/callsigns.service /etc/systemd/system/callsigns.service
systemctl enable callsigns
systemctl start callsigns

Testing

Once the service is up and running, execute npm test to perform some end-to-end tests.

License

Code License: see LICENSE.md

Data License: see Terms and Conditions on the Industry Canada website.