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.
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
- 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.