Server setup

This page is mostly a todo-list for my self, but maybe somebody else will find it usefull. I you need a more thourgh explanation the some of the topics are described here: The Perfect Server – Ubuntu Hardy Heron (Ubuntu 8.04 LTS Server)

NFS
First I need to install the NFS server:

maxwell:/home/tjansson# aptitude install nfs-kernel-server nfs-common portmap

Next I select the folders to share through NFS by editing the file /etc/exports:

#/etc/exports: the access control list for file systems which may
/home/ 192.168.1.151 (rw,no_root_squash)

This line states that /home/ should be shared with the machine 192.168.1.151. The share will be read and write rights (rw) and (no_root_squash) means that the root on the client will have root access on the server. Finally NFS is updated with:

maxwell:/home/tjansson# exportfs -a

On the machine the wishes to mount the NFS share the /etc/fstab file should contain a line like this:

maxwell:/home/tjansson /mnt/nfs nfs defaults 0 0


LAMP
The installation of LAMP is quite easy when running Ubuntu server – it is a install option. After the install I modified to /etc/hosts to yeild:

root@nobel:~# cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       foo.bar.com nobel

Dynamical IP
I use the danish dynamical IP setup and I have a crontab running this script:

#!/bin/ash
wget -q 'http://dyndns.dk/opdat.php?name=foobar&domain=dyndns.dk&pw=foobarcode&silent=1' --output-document=/var/log/dyndns.log

My root crontab looks like this:

# m h  dom mon dow   command
7 0 * * * /usr/bin/updatedb
0 */6 * * * /home/tjansson/bin/dyndns.sh

CUPS server
I wrote an article on the subject earlier:
Printing to a CUPS server from Linux, OS X and Windows

gkrellmd – monitoring
I use the to monitor the server live from other computers. Beside installing the daemon I have to edit the permissions in /etc/gkrellmd.conf to allow computers on the LAN to acces the data:

allow-host      localhost
allow-host      127.0.0.1
allow-host      192.168.1.*

If I wish to monitor the server from a computer which is not on the local network I use a script which sends the data trough a ssh tunnel:

#!/bin/bash
sleep 10
ssh -f -N -L 3043:localhost:19150 foobar.com
gkrellm -s localhost -P 3043

3043 is just a random unused port number and 19150 is the default gkrellmd number.

Unison
The server also has the unison server install to provied easy backup. See the article: Unison – Secure synchronization of 2 computers

Users and quota
After a reinstall I need to reactivate old user and provied them with new passwords and quotas. First I add the new users with:

adduser foobarname

Then I provied them with a passwd generated with (pwgen)

passwd foobarname

Next I setup quota

aptitude install quota

/etc/fstab needs to be edited so the partion with quota on contains usrquota and grpquota:

/dev/hda2 /home ext3 defaults,usrquota,grpquota 0 2

Finally the following command needs to be run:

touch /home/quota.user /home/quota.group
chmod 600 /home/quota.*
mount -o remount /home/
quotacheck -avugm
quotaon -avug

Finally edit one of the users:

root@nobel:~# edquota hite 
Disk quotas for user hite (uid 1004):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda3                    152752     300000     400000       2768        0        0

Hardlimit is 300 mb and hard limit is 400 mb. Other users should inherit these options:

root@nobel:/# edquota -p hite christian hartvig


NTP
To make sure that the servers clock is always on time I use NTP:

aptitude install ntp ntpdate

/etc/motd
The message of the day: I wish to have a custom welcome screen on my server. So I changed /etc/motd using Zazzybob.com Tips and Tricks Database

   ^[[7m                                                   ^[[0m
   ^[[7m          Welcome to foobar.com                    ^[[0m
   ^[[7m        Thinkpad T40, 1,5 GHz, 768 mb ram          ^[[0m
   ^[[7m                                                   ^[[0m
   ^[[7m             Authorized use only!!!                ^[[0m
   ^[[7m                                                   ^[[0m

Other services
To scale the CPU frequency by load I use powernowd and to get rid of bruce force attack I use denyhosts. I had some problems with long longin times through ssh, so I add the following line to the file /etc/ssh/sshd_config

UseDNS no

and restart the ssh server:

root@nobel:~# /etc/init.d/ssh reload

Furthermore I find the sudo hint irritating every time I login through ssh

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

So I commented out the lines in /etc/bash.bashrc

Noisy fan
The server is an old Thinkpad T40 and even though the fan isn’t that loud it is annoying. The server idles most of the time and should scale down the cpu. First I check the fan speed:

root@nobel:~# cat /proc/acpi/ibm/fan
status:         enabled
speed:          2988
level:          auto

The installed powernowd didn’t appeal to me and chose to install cpufreqd instead:

root@nobel:~# aptitude remove powernowd
root@nobel:~# aptitude install cpufreqd cpufrequtils

And afterwards inserting these lines into the file /etc/modules which will load them on startup.

cpufreq_conservative
cpufreq_ondemand
cpufreq_powersave
cpufreq_stats
cpufreq_userspace

Instead of restarting the modules can be load by using modprobe.

The next thing to do is to check if it works.

root@nobel:~# cpufreq-info
cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which need to switch frequency at the same time: 0
  hardware limits: 600 MHz - 1.50 GHz
  available frequency steps: 1.50 GHz, 1.40 GHz, 1.20 GHz, 1000 MHz, 800 MHz, 600 MHz
  available cpufreq governors: userspace, powersave, ondemand, conservative, performance
  current policy: frequency should be within 1.50 GHz and 1.50 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 1.50 GHz (asserted by call to hardware).

Now I set the govenor to the one I think will be the least intensive and the max cpu speed to 1.2 GHz:

root@nobel:~# cpufreq-set --governor powersave
root@nobel:~# cpufreq-set --max 1.20 GHz

Update: I just found the program ThinkPad Fan Control which is both really easy to install under Ubuntu. Add the repository to /etc/apt/sources.list

deb http://ppa.launchpad.net/surban/ubuntu hardy main

and install the daemon as well as the admin tool:

aptitude install tpfand tpfan-admin

and finally I run the program through a X-forwarded ssh

tjansson@bohr:~$ ssh -X root@nobel tpfan-admin



Editing grub the smart way
I wish to see as much information as possible while booting Ubuntu, so I edited the file:

/boot/grub/menu.lst

and changed the line

# defoptions=quiet splash

to

# defoptions=splash

Setting up samba
Setting up samba is quite easy. Edit the file /etc/samba/smb.conf to block like this in the bottom of the file and setup the password by using “smbpasswd tjansson”.

[tjansson]
        path = /home/tjansson
        writeable = yes
;       browseable = yes
        valid users = tjansson

Stopping GDM from starting at boot
To remove it

root@server:~# update-rc.d -f gdm remove

To restore it to the normal state

root@server:~# update-rc.d -f gdm defaults

Disable the WIFI
Find the name of the wifi kernel module with

root@server:~# lshw -class network

and add it to /etc/modprobe.d/blacklist:

# I don't use WIFI
blacklist ipw2100

Sending mail through the ISP SMTP server
http://newbiedoc.sourceforge.net/networking/exim.html
and create a .forward file with the mail all the local mails should be forwarded to.

Use logwatch to monitor logfiles

root@server:~# aptitude install logwatch

Edit the file /usr/share/logwatch/default.conf/logwatch.conf such that

Mailto = root

is changed to my gmail account

Mailto = tjansson...@gmail.com

Finally in /usr/share/logwatch/scripts/logwatch.pl change

$Config{'output'} = "html";
#$Config{'output'} = "unformatted";

Such that the reports are send as html.