BTRFS RAID10 on Gentoo

Btrfs is fairly stable and with the latest kernels it is becoming even a better alternative to the most commonly used EXT4 and XFS filesystems. While not being always better or faster it brings to the table a huge amount of improvements that makes it by far the best filesystems for storage. XFS itself is moving in the very same direction and will probably have in the near future some of the features Btrfs already has (e.g. copy on write). No MDADM or partitioning is needed, to create a RAID10 with 4 HDD just type (where /dev/sd[X] is the disk whole disk, not a partition): …

Posted on

Ejabberd HTTP File Upload (XEP-0363)

XMPP module HTTP File Upload (formerly XEP-0363) provides a way to share files between XMPP clients, it works transparently and even in multi user chats. The sender uploads a file on an HTTP(S) server that will then generate an URI, this is sent to each one of the recipients that can then download it. The interesting bits about this XEP are various: File sharing now works even in multi-user chats (MUC), in any case the file is only uploaded a single time even if the recipients are more than one. Peer-to-peer file transfer, be it in-band (XEP-0234: Jingle File Transfer) or out-of-band (XEP-0065: SOCKS5 Bytestreams), is slow, unreliable, does not work in MUC and does not work if the recipient is offline. HTTP File Upload supports both client-server encryption (HTTPS) and end-to-end encryption when used in conjunction with OMEMO encryption (as per today this is supported by Conversations on Android and Gajim desktop client). 3.1. When using OMEMO encryption the files are stored encrypted on the server, this makes it impossibile for ejabberd to create a thumbnail if the file sent is a picture. To enable HTTP File Upload module with HTTPS enabled in ejabberd edit ejabberd.yml configuration file: > listen: - port: 5443 ip: "0.0.0.0" module: ejabberd_http request_handlers: "upload": mod_http_upload tls: true protocol_options: 'TLS_OPTIONS' dhfile: 'DH_FILE' ciphers: 'TLS_CIPHERS' modules: mod_http_upload: docroot: "/home/ejabberd/upload" # this must be a valid path, user ownership and SELinux flags must be set accordingly put_url: "https://@HOST@:5443/upload" access: local max_size: 25000000 #25 MByte thumbnail: false file_mode: "0644" dir_mode: "0744" mod_http_upload_quota: max_days: 2 shaper: soft_upload_quota: - 250: all # MiB hard_upload_quota: - 10000: all # MiB define_macro: 'TLS_CIPHERS': "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256" 'TLS_OPTIONS': - "no_sslv2, no_sslv3, no_tlsv1" - "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256" - "no_compression" 'DH_FILE': "/usr/local/etc/ejabberd/dhparams.pem" # generated with: openssl dhparam -out dhparams.pem 4096 Add an iptables rule to allow traffic coming from port TCP 5443: …

Posted on

Copy Linux sparse files over network

Sparse files are nice to use to store virtual machine’s virtual disks but can be a real pain in the ass to backup efficiently, especially over the network. Luckily rsync provides a way to intelligently copy sparse files both locally and over the network. The trick is use --sparse and --inplace options. Let’s say we have a sparse 60 GB qemu virtual disk with only around 7 GB used: $ ls -lh fedora24.qcow2 -rw------- 1 root root 61G Nov 8 19:11 fedora24.qcow2 $ du -h fedora24.qcow2 7.2G fedora24.qcow2 The first thing to note is that ls does not recognize sparse files while du does. The first time a file is copied use the --sparse option: …

Posted on

CM13 reboot when opening gallery

All Cyanogenmod 13 nightly builds past July 28 seem to be affected by a bug that makes the phone reboot just a few seconds after opening the Gallery application. The issue seems to be related to the newly added support to sdcardfs which obviously isn’t playing well at the moment. A workaround to prevent the phone from crashing and rebooting is to edit the build.prop file located in /system; this can be done either via adb using the command adb shell or more practically directly on the phone using the built in file manager and text editor (provided that in file manager’s settings access mode option is set to Root access mode).

Posted on

RawTherapee: compiling from source on Fedora 23

RawTherapee from my experience is by far the best program to manipulate RAF files, it’s demosaic algorithm for Fujifilm X-Trans sensors is astonishingly good. Too bad that, like for Darktable, the version included in Fedora’s repos is outdated to say the least. To install from source first install some dependecies: $ sudo dnf install bzip2-devel cmake exiv2-devel expat-devel fftw-devel gcc-c++ glib2-devel glibmm24-devel gtk3-devel gtkmm30-devel lcms2-devel libcanberra-devel libiptcdata-devel libjpeg-turbo-devel libpng-devel libsigc++20-devel libtiff-devel zlib-devel gtkmm24-devel lensfun-devel Git clone and install …

Posted on

Darktable: compiling from source on Fedora 23

Darktable documentation on this matter is somewhat fragmented, so I figure a small how-to on how to install it from source on Fedora 23 could be useful. The version included in the official repositories is really old (version 1.6.9 as per today) and is missing some important presets for many widely used cameras. The latest version source code archive can be downloaded from here: https://github.com/darktable-org/darktable/releases. Before compiling and installing the software the following dependencies must be installed: …

Posted on

Automating Ejabberd upgrade procedure with Ansible

CentOS repos (both official and EPEL) does not provide an up to date version of Ejabberd, installing from source is the only way if one want or need a version from this century. Problem is that doing things manually is a never ever a good idea, luckily Ansible and a bit of Python love come to rescue. Supposing Ejabberd is already installed and configured (I wrote a post on the subject a couple of years ago: https://nagg.eu/ejabberd-xmpp-server-configuration-guide//) the following Ansible script will take care of all the steps needed to upgrade to a newer version of Ejabberd …

Posted on

TWRP with FS encryption and CM13 support for OPO

Android ROM scene is cluster fuck of inhumane proportion; the complete lack of documentation, decent how-to, decent guides and the retarded works for me attitude the whole community has really amazes me. TWRP project is a good example of a really useful tool used by [millions] of people all over the world, one would assume that it has to be maintained in a professional way but this is as far from the reality as something can get. The official site lacks any kind of documentation, the only information one can find there are either completely useless or partial and incomplete (e.g. the how to build from source guide linked on TWRP faq page is a link to a XDA forum post saying absolutely nothing on how to build this shit). Not only that, but the site download page (one would hope that at least that part was taken care of…) is not up to date. For bacon (oneplus one), which is a really popular phone among modders, the latest version present in the download page of the official TWRP site is the buggy and completely useless twrp-2.8.7.0-bacon. To get the latest version (twrp-2.8.7.1-bacon) which supports file-system encryption on CM13 and correctly flash the baseband ROM one has to dig through a whole pile of shit on XDA and finally find a post where pajeet post a link where to download it: http://build.twrp.me/twrp/twrp-2.8.7.1-bacon.img The irony is that the link is from the TWRP official site even though it can’t be found anywhere on the bacon download page on the very same site. In case someone decide to delete the file I am rehosting it here: https://nagg.eu/misc/twrp-2.8.7.1-bacon.img …

Posted on

mdadm RAID on Linux

Every time I have to setup a software RAID in Linux using mdadm I forget something, this time I am writing it down once and for all (or at least I hope so). For the sake of simplicity I will use the creation of a RAID1 as example but this very same procedure can be applied for any other kind of RAID. RAID array creation 1. Partition the drives This step must be repeated for each drive of the array (/dev/sdb and /dev/sdc in my case). …

Posted on

Defragment XFS file system

XFS just like EXT4 (I wrote a post about it last year) supports online defragmentation, to manage those volumes on CentOS and Fedora xfsprogs package is needed. Fragmentation level of XFS volumes can be checked with the command: [root@CentOS ~]$ xfs_db -c frag -r /dev/sdb1 actual 4491, ideal 4006, fragmentation factor 10.80% To perform online defragmentation of XFS volumes run the following command: …

Posted on