I’m posting this in case anyone else gets stuck setting up Apache
with Gitweb. Also as a reminder to myself in case I ever need to
set up this all over again.
You have all your eggs in one basket (GitHub), and
You really like that shiny basket, but
You know you’re clumsy and usually drop baskets yourself.
You are wise (yes you are!) and realize you need another basket, so
You set up a server and a domain yourself …
OK. Let’s start simple, since you are already running the latest Debian
you fire up the command line and install the basics:
sudo apt-get install gitweb apache2
So it’ll complain, you’ll clarify your request and soon all required
packages are on your server. Now what?
Debian has already set up http://localhost/gitweb for you, and if you
have a domain already you should go ahead and edit the master file for
that:
editor /etc/apache2/sites-available/000-default.conf
service apache2 reload
If you want to use that for your gitweb needs, then you’re done!
With these two lines in your /etc/finit.conf you tell finit to launch
the Dropbear SSH
server on demand on port 22 (default ssh/tcp port in /etc/services) on
all interfaces except on eth0, which in your case is the Internet
(WAN) interface, here you want SSH to run on port 222. Actually, you
don’t want port 22 open at all on eth0 … so finit takes care of this
for you! Seriously, it just works, no need for messing about with that
nasty old iptables anymore!
The original UNIX inetd super server supported many protocols
internally, some of which may seem a bit odd today, and some have been
superseded by more modern protocols.
Finit currently only supports one internal/built-in standard service,
time. It is built as a plugin to serve as an example of how you can
extend Finit yourself. The time service can be called either as UDP or
TCP. To prevent security issues, the time protocol is disabled by
default. To enable it you need two things:
The time.so plugin (built by default)
An inetd time ... line in /etc/finit.conf
Assuming you’ve installed the default set of plugins, the following two
lines can be added:
This can be very useful for testing the inetd capabilities, your network
connection, or simply to get the time to a client where NTP for some
reason does not work, or is blocked. For instance, you could have a GPS
setup on your server and distribute time to clients with the time
protocol.
To use it you need an rdate
client. Users of rdate in BusyBox may need to be reminded that it
only supports TCP.
$ rdate -pu 198.51.100.42
Sat Mar 7 08:48:58 CET 2015
For more info on Finit and its features, see the README.
Update 2015-03-09: This release has unfortunately been yanked due
to serious regressions in launching background processes. It has been
replaced by v1.12
This is one of the truths you learn when you start working with C. Most
of the time adding CPPFLAGS="-W -Wall -Werror" is all you need to find
all the nasty bugs. And if that’s not enough, there are tons of tools
for static code analysis, like scan-build in
Clang, and
Coverity Scan, to help you find all the
bugs!
However, these pesky warnings (some of which cannot even be disabled!)
are sometimes more of a nuisance than help. Sometimes you know that
some parameters to a function will remain unused – it’s a callback, and
you don’t need all the data given to you. So you start adding all kinds
of voodoo, like __attribute__ ((unused)) … seriously?
I’m a coder, not a writer. Here’s what I’ve been working on during the winter holidays:
A new feature release of Finit is coming shortly, which will use libuEv and feature inetd support built-in!
Another minor release of my own take on event loops, libuEv v1.0.3. This time with a heavy focus on documentation and Q&A, extensive validation testing have been done on this release.
Released another minor release of mrouted, v3.
I’ve had this long-standing issue with backups. It’s deadly boring to
set up and maintain, so I don’t do any. Until today!
Today I moved the sources for my Octopress blag
to GitHub, which also prompted me to set up
a mirror on
GitHub Pages. As usual, reading up on the
subject and muster enough motivation took me about three months, whereas
the actual work took about 4h.
On one of the last days of 2014 I release pimdv2.2.0, which
is an awesome release with a lot of new features and bug fixes!
However, it could very well be the last release I do. Even though its
one of my most popular projects on
GitHub I have not had enough time to
dedicate to it over the years. I will continue to do fixes and merge
pull requests until someone else steps up to take over. There is also
the distinct possibility that the
Xorp PIM-SM or the new
Quagga PIM-SSM implementations will
(finally) make good old pimd completely redundant.
At work we will likely start using the
Quagga PIM rather than pimd in WeOS.
For now though, enjoy pimd v2.2.0. It’s been tested in both my Qemu
based virtual testbed and a few setups using Linux’ netns feature in
CORE – awesome
little proggy! :-)
This is a very short blog post, mostly intended as a reminder to myself. Basically, there are two methods of adding multicast routing support to the FreeBSD kernel:
Rebuild the kernel with options MROUTING Load the kernel module: kldload ip_mroute The kernel rebuild assumes the src.txz set was installed previously.
cd /usr/src cd sys/amd64/conf cat GENERIC | sed 's/GENERIC$/MULTICAST/' > MULTICAST echo 'options MROUTING # Multicast routing' >> MULTICAST echo 'options PIM # Enable for pimd' >> MULTICAST cd - make kernel KERNCONF=MULTICAST reboot That’s it.