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.
- 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
Grab the source code:
mkdir -p /var/node && cd /var/node git clone git://github.com/tcort/callsigns.git && cd callsigns
Install the dependencies:
iptables-restore < ./etc/iptables/rules.v4 ip6tables-restore < ./etc/iptables/rules.v6 apt-get install iptables-persistent
Populate the database:
Add a cron job to refresh the database:
crontab -e 15 1 * * * /var/node/callsigns/db/refresh.sh >/dev/null 2>&1
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
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.