Setting up QuasselCore on a Debian Server

Most of this information comes from this wiki page which was pretty out of date.

From the start, instead of installing what it says there, quassel is now using qt5, so I’ve changed the command to this: sudo apt install git-core zlib1g-dev qca-qt5-2-utils libqca-qt5-2-dev qtbase5-dev qttools5-dev-tools libqt5sql5-psql screen cmake build-essential libboost-dev

if you don’t want postgres, you can use libqt5sql5-mysql for mysql, libqt5sql5-sqlite for sqlite.

The rest of the installation is the same as the wiki, but I’ll copy it anyway

Getting the sources

mkdir quassel-build
cd quassel-build
git clone https://github.com/quassel/quassel.git

Building

mkdir quassel/build
cd quassel/build
cmake -DWANT_CORE=1 -DWANT_QTCLIENT=0 -DWANT_MONO=0 ../
make
sudo make install

or to change the install path -DCMAKE_INSTALL_PREFIX=/path/where/it/should/be/installed for the cmake options

Migrating a Postgres DB

Turns out I was importing the database wrong, but in general the guide is correct, here’s what I did to make it work properly.

  1. Make a new database on the new server, with the owner as quassel

    1. Ensure that you have a quassel user, and you’ve setup the postgres to properly connect (ident instead of peer)
  2. sudo -u postgres psql
    postgres=# CREATE USER quassel ENCRYPTED PASSWORD 'somepassword';
    postgres=# CREATE DATABASE quassel WITH OWNER quassel ENCODING 'UTF8';
    
    OR
    postgres=# ALTER USER postgres with encrypted password 'ur password';
    
  3. dump the existing database from THE OLD SERVER (the database and username are both called ‘quassel’ in this example)
    pg_dump --clean --no-owner --no-acl --file=quassel-dump.sql quassel

  4. copy the dump to the new server
    scp -C -o CompressionLevel=9 quassel-dump.sql user@newserver.com:~

  5. Import the dump on the new server
    psql -d quassel -U quassel < quassel-dump.sql

  6. Run the quassel-core, with the new database (RUN THIS AS THE USER THAT QUASSEL RUNS AS)
    quasselcore --select-backend=PostgreSQL --configdir=/var/lib/quassel/

  7. Change the password for the user
    quasselcore --change-userpass=usernamehere --configdir=/var/lib/quassel/
    After that, you should have imported it successfully, so now make a systemd service file for it, (I’ll attach one at the bottom of the post), run and you should be all good to run!

SSL

https://troubles.noblogs.org/post/2018/04/24/quassel-and-lets-encrypt/

Systemd Service file

[Unit]
Description=distributed IRC client using a central core component
Documentation=man:quasselcore(1)
Wants=network-online.target postgresql.service
After=network-online.target postgresql.service

[Service]
User=quasselcore
Group=quasselcore
WorkingDirectory=/var/lib/quassel
Environment="DATADIR=/var/lib/quassel" "LOGFILE=/var/log/quassel/core.log" "LOGLEVEL=Info" "PORT=4242"
EnvironmentFile=-/etc/default/quasselcore
ExecStart=/usr/local/bin/quasselcore --configdir=${DATADIR} --logfile=${LOGFILE} --loglevel=${LOGLEVEL} --port=${PORT}
Restart=on-failure

[Install]
WantedBy=multi-user.target