I haven’t been on IRC for over a decade. But lately, I’ve decided that I should spend more time in my local hackerspace’s IRC channel. Previously I used mIRC, but since my computer isn’t on all day, and I’d like the ability to be connected from multiple devices at the same time under the same nick, I decided that I maybe should use a bouncer. Enter Quassel. It seems to do what I want (for now) and here’s how I got the core up and running on my NAS (639). It was relatively painless thanks to a few guys (sorry, I forgot your nicks) on the Quassel IRC channel who pointed me in the direction of the statically linked core.
Update (07/05/2012): This did not work for me with Quassel 0.8.0. The staticly linked build needs a newer version of GLIBC than what’s present on my NAS. If your NAS has GLIBC 2.7 or later, you’re good to go.
- Install ipkg if not already installed.
- Telnet into your NAS as
admin
(you can't login with any other account even if they have admin privileges). - Install other prerequisites:
ipkg install coreutils openssl
mkdir /share/MD0_DATA/.quasselcore
cd /share/MD0_DATA/.quasselcore
- Download the statically linked Quassel core:
wget http://quassel-irc.org/pub/quasselcore-static-0.7.3.bz2
bunzip2 quasselcore-static-0.7.3.bz2
chmod +x quasselcore-static-0.7.3.bz2
- Create a new user to run Quassel under:
adduser -h /share/MD0_DATA/.quasselcore/home quassel
mkdir home/.config/quassel-irc.org
cd home/.config/quassel-irc.org
- Using your favourite text editor create
openssl.cnf
in the current directory with the following contents:# # OpenSSL configuration file. # # Establish working directory. dir = . [ ca ] default_ca = CA_default [ CA_default ] serial = $dir/serial database = $dir/certindex.txt new_certs_dir = $dir/certs certificate = $dir/cacert.pem private_key = $dir/private/cakey.pem default_days = 365 default_md = md5 preserve = no email_in_dn = no nameopt = default_ca certopt = default_ca policy = policy_match [ policy_match ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 1024 # Size of keys default_keyfile = key.pem # name of generated keys default_md = md5 # message digest algorithm string_mask = nombstr # permitted characters distinguished_name = req_distinguished_name req_extensions = v3_req [ req_distinguished_name ] # Variable name Prompt string #------------------------- ---------------------------------- 0.organizationName = Organization Name (company) organizationalUnitName = Organizational Unit Name (department, division) emailAddress = Email Address emailAddress_max = 40 localityName = Locality Name (city, district) stateOrProvinceName = State or Province Name (full name) countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 commonName = Common Name (hostname, IP, or your name) commonName_max = 64 # Default values for the above, for consistency and less typing. # Variable name Value #------------------------ ------------------------------ 0.organizationName_default = My Company localityName_default = My Town stateOrProvinceName_default = State or Providence countryName_default = US [ v3_ca ] basicConstraints = CA:TRUE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always [ v3_req ] basicConstraints = CA:FALSE subjectKeyIdentifier = hash
- Create the SSL cert:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout quasselCert.pem -out quasselCert.pem -config openssl.cnf
- Setup an autorun script if you haven't already done so before.
- Add the following line to your autorun script:
/share/MD0_DATA/.qpkg/Optware/bin/coreutils-su -c "/share/MD0_DATA/.quasselcore/quasselcore-static-0.7.3" - quassel
- This should start Quassel core whenever you restart your NAS. Otherwise, you can use
screen
to start a persistent session and run Quassel core (/share/MD0_DATA/.quasselcore/quasselcore-static-0.7.3
) from there. - Connect to the core with the Quassel client and configure the core from there. Note: I did not install PostgreSQL and since this core is only to serve my limited needs, I sent with the local SQLite database.li