Query the Canadian Amateur Radio Callsign Database
npm install callsignsThis 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.
* 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
* systemd
* iptables
* nginx
* openssl
* mysql
* wget
* unzip
* node.js
* npm
* letsencrypt
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
Once the service is up and running, execute npm test to perform some end-to-end tests.
Code License: see LICENSE.md
Data License: see Terms and Conditions
on the Industry Canada website.