Install BackupPC on CentOS 6.3
Last week, my boss asked me to install BackupPC on CentOS 6.3. Why CentOS? I actually have the same question–sorry, am used to Debian; regardless, my quest begun but I have to confess, it was not as easy as it seemed since there were fewer How To’s, Tips, and references for CentOS, especially 6 or 6.3 for that matter. This is reason enough for me to blog the steps I undertook to successfully install BackupPC on CentOS 6.3 and make it work after a week of “trial and error”–I may be a Debian user but am not a Linux geek. I am instead part of this group . Without further ado, let’s get it on!
- You need to have a running CentOS 6.3. I installed it with minimal components on a VM via Hyper-V 2; “lean but mean” so to say.
- Using Putty, connect to your CentOS box and install these useful tools:
- wget – an easy-to-use CLI download tool.
- nano – a file editor for humans.
- screen – I like this tool because it allows you to have different screens for every task you to do; very useful, it enhances your Putty experience
- man – your dependable CLI technical support.
Use this command yum -y install man nano screen wget
-
You need to add two special repositories, EPEL and REMI. A number of the packages we need for this endeavor is not part of the Red Hat / CentOS package manifest.
wget -c http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget -c http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm -
Enable the REMI repository.
nano /etc/yum.repos.d/remi.repoEdit and save the above file to reflect this:
name=Les RPM de remi pour Enterprise Linux $releasever – $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority -
Install the BackupPC pre-requisites.
yum -y install perl-Compress-Zlib perl-Archive-Zip perl-File-RsyncP perl-suidperl openssh-clients expect -
Do an update, then upgrade, to make sure everything is up-to-date.
yum -y update
yum -y upgrade -
We need to create the user account that BackupPC will use and assign a password for it.
adduser backuppc
passwd backuppcYou will be prompted to key-in your desired password. Remember this password ’cause you will need it later.
-
And now folks, the moment you’ve all been waiting for, the BackupPC installation!
yum -y install BackupPCI wish the command was longer or better yet, extremely complex but that’s just it…
-
After the package installation, two biggies are now in place, Apache and BackupPC. Verify that these services are listed in the startup script.
chkconfig –list backuppc
chkconfig –list httpdNotice that both are turned off.
-
We need to make these two services start at startup. Do this:
chkconfig backuppc on
chkconfig httpd on -
You’re probably guessing what’s Apache got to do with BackupPC; well, it runs the web interface but we need to do some tasks before we can use it. We first need to create the access file.
htpasswd -c /etc/BackupPC/apache.users backuppcYou will be prompted for a password; just key-in the password you assigned the backuppc user awhile back.
-
Edit and save the BackupPC configuration file for Apache.
nano /etc/httpd/conf.d/BackupPC.confYour changes should reflect something like this:
order deny,allow
deny from all
#allow from 127.0.0.1
#allow from ::1
allow from all
AuthType Basic
AuthUserFile /etc/BackupPC/apache.users
AuthName “backuppc” -
As a safety precaution, make a duplicate of the BackupPC main configuration file.
cp /etc/BackupPC/config.pl /etc/BackupPC/config.pl.ORIG -
We’ll use screen to help us accomplish this next task.
screen
nano /etc/BackupPC/config.plIn nano, press CTRL + W; this will invoke the search facility. Search for this parameter $Conf\{ServerMesgSecret\}.
Now, press CTRL + A + C; this will open another screen. Run this command:
mkpasswd -l 32 -d 16Highlight the output then press CTRL + A + P; this will bring you back to the previous screen. Right-click your mouse to paste the output between the single quotes of the aforementioned configuration parameter. You should have something like this:
$Conf{ServerMesgSecret} = ‘7687nR848l39etpm7812w1f-pj3iEpb7’;Next, search for this parameter $Conf{CgiAdminUsers} and add backuppc. You should have something like this:
$Conf{CgiAdminUsers} = ‘backuppc’; -
This time, edit the Apache configuration file.
nano /etc/httpd/conf/httpd.confChanges should reflect these changes:
User backuppc
Group apache
ServerName actual_server_hostname_or_IP_Address:80
(e.g. ServerName 172.27.10.25:80) -
Now, the secret that made the BackupPC web interface work:
iptables -I INPUT -p tcp –dport 80 -j ACCEPT
/sbin/service iptables saveJust to make sure the firewall entry was saved, we verify.
cat /etc/sysconfig/iptables. Result below:# Generated by iptables-save v1.4.7 on Mon Oct 15 15:57:49 2012
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:464]
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT
# Completed on Mon Oct 17 15:57:49 2012 -
We now are nearing completion, let’s start the services.
service httpd start
service backuppc start -
The finale, access the BackupPC web interface.
http://backuppc_server_hostname/BackupPC
Whew, I sure am glad we’re done.
Now give yourself a pat on back for a job well done…
Hope this helps
Terrific work! That is the type of info that should be shared across the net. Disgrace on Google for now not positioning this post upper! Come on over and visit my site . Thank you =)
thank you, thank you, thank you! you have cleared up a few questions that I had… if only we would all share our troubles with the detail and elegance that you presented this information!! 🙂
You’re welcome. Glad it was helpful
In step 17 the second line should be:
service backuppc start
Thanks for pointing it out; it actually was a typo. Correction applied.
I’m getting the follow error; please help!
Error: Package: BackupPC-3.2.1-7.el6.x86_64 (epel)
Requires: perl(Net::FTP::RetrHandle)
Error: Package: BackupPC-3.2.1-7.el6.x86_64 (epel)
Requires: httpd
Error: Package: BackupPC-3.2.1-7.el6.x86_64 (epel)
Requires: perl(Net::FTP::AutoReconnect)
You could try using –skip-broken to work around the problem
You could try running: rpm -Va –nofiles –nodigest
Dennis, Hi. Please retry steps 3 through 5 and install BackupPC again. Hope this helps.
[root@##server ##user]# rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
warning: remi-release-6.rpm: Header V3 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
Preparing… ########################################### [100%]
package epel-release-6-7.noarch is already installed
package remi-release-6-1.el6.remi.noarch is already installed
[root@##server ##user]# nano /etc/yum.repos.d/remi.repo
[root@##server ##user]#
[root@##server ##user]# yum -y install perl-Compress-Zlib perl-Archive-Zip perl-File-RsyncP perl-suidperl openssh- clients expect
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/metalink | 14 kB 00:00
* base: mirror.nl.leaseweb.net
* epel: mirror.nl.leaseweb.net
* extras: mirror.nl.leaseweb.net
* remi: rpms.famillecollet.com
* updates: mirror.nl.leaseweb.net
base | 3.7 kB 00:00
epel | 4.3 kB 00:00
epel/primary_db | 4.8 MB 00:00
extras | 3.5 kB 00:00
remi | 2.9 kB 00:00
remi/primary_db | 423 kB 00:00
updates | 3.5 kB 00:00
Setting up Install Process
Package perl-Compress-Zlib-2.020-127.el6.x86_64 already installed and latest version
Package perl-Archive-Zip-1.30-2.el6.noarch already installed and latest version
Package perl-File-RsyncP-0.68-6.el6.x86_64 already installed and latest version
Package 4:perl-suidperl-5.10.1-127.el6.x86_64 already installed and latest version
Package openssh-clients-5.3p1-81.el6_3.x86_64 already installed and latest version
Package expect-5.44.1.15-4.el6.x86_64 already installed and latest version
Nothing to do
[root@##server ##user]# yum -y update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.nl.leaseweb.net
* epel: mirror.nl.leaseweb.net
* extras: mirror.nl.leaseweb.net
* remi: rpms.famillecollet.com
* updates: mirror.nl.leaseweb.net
Setting up Update Process
No Packages marked for Update
[root@##server ##user]# yum -y upgrade
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.nl.leaseweb.net
* epel: mirror.nl.leaseweb.net
* extras: mirror.nl.leaseweb.net
* remi: rpms.famillecollet.com
* updates: mirror.nl.leaseweb.net
Setting up Upgrade Process
No Packages marked for Update
[root@##server ##user]# adduser backuppc
adduser: user ‘backuppc’ already exists
[root@##server ##user]# passwd backuppc
Changing password for user backuppc.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@##server ##user]# yum -y install BackupPC
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.nl.leaseweb.net
* epel: mirror.nl.leaseweb.net
* extras: mirror.nl.leaseweb.net
* remi: rpms.famillecollet.com
* updates: mirror.nl.leaseweb.net
Setting up Install Process
Resolving Dependencies
–> Running transaction check
—> Package BackupPC.x86_64 0:3.2.1-7.el6 will be installed
–> Processing Dependency: perl-Time-modules for package: BackupPC-3.2.1-7.el6.x86_64
–> Processing Dependency: perl(XML::RSS) for package: BackupPC-3.2.1-7.el6.x86_64
–> Processing Dependency: perl(Time::ParseDate) for package: BackupPC-3.2.1-7.el6.x86_64
–> Processing Dependency: httpd for package: BackupPC-3.2.1-7.el6.x86_64
–> Running transaction check
—> Package BackupPC.x86_64 0:3.2.1-7.el6 will be installed
–> Processing Dependency: httpd for package: BackupPC-3.2.1-7.el6.x86_64
—> Package perl-Time-modules.noarch 0:2006.0814-5.el6 will be installed
—> Package perl-XML-RSS.noarch 0:1.45-2.el6 will be installed
–> Processing Dependency: perl(DateTime::Format::W3CDTF) for package: perl-XML-RSS-1.45-2.el6.noarch
–> Processing Dependency: perl(DateTime::Format::Mail) for package: perl-XML-RSS-1.45-2.el6.noarch
–> Running transaction check
—> Package BackupPC.x86_64 0:3.2.1-7.el6 will be installed
–> Processing Dependency: httpd for package: BackupPC-3.2.1-7.el6.x86_64
—> Package perl-DateTime-Format-Mail.noarch 0:0.3001-6.el6 will be installed
–> Processing Dependency: perl(DateTime) >= 0.18 for package: perl-DateTime-Format-Mail-0.3001-6.el6.noarch
–> Processing Dependency: perl(Params::Validate) for package: perl-DateTime-Format-Mail-0.3001-6.el6.noarch
—> Package perl-DateTime-Format-W3CDTF.noarch 0:0.04-8.el6 will be installed
–> Running transaction check
—> Package BackupPC.x86_64 0:3.2.1-7.el6 will be installed
–> Processing Dependency: httpd for package: BackupPC-3.2.1-7.el6.x86_64
—> Package perl-DateTime.x86_64 1:0.5300-1.el6 will be installed
–> Processing Dependency: perl(Class::Singleton) >= 1.03 for package: 1:perl-DateTime-0.5300-1.el6.x86_64
–> Processing Dependency: perl(List::MoreUtils) for package: 1:perl-DateTime-0.5300-1.el6.x86_64
–> Processing Dependency: perl(Class::Singleton) for package: 1:perl-DateTime-0.5300-1.el6.x86_64
—> Package perl-Params-Validate.x86_64 0:0.92-3.el6 will be installed
–> Running transaction check
—> Package BackupPC.x86_64 0:3.2.1-7.el6 will be installed
–> Processing Dependency: httpd for package: BackupPC-3.2.1-7.el6.x86_64
—> Package perl-Class-Singleton.noarch 0:1.4-6.el6 will be installed
—> Package perl-List-MoreUtils.x86_64 0:0.22-10.el6 will be installed
–> Finished Dependency Resolution
Error: Package: BackupPC-3.2.1-7.el6.x86_64 (epel)
Requires: httpd
You could try using –skip-broken to work around the problem
You could try running: rpm -Va –nofiles –nodigest
[root@##server ##user]#
Awesome post, thanks so much for the help!!
Very Good Post..It helped me a lot….:)
This was a great post. Install worked perfectly, but I ran into a few issues:
EPEL install must be done using the following link for the RPM: http://mirrors.xmission.com/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
Also, when you do your search in the config file, do not add the \’s in the search terms…
Finally, I had to edit IPTABLES manually and add this line as the command above gave me an error: -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
Otherwise, it worked perfectly and I had no trouble following your guide. Thank you very much!
I was having the same problem. Kept getting a “Bad argument `80′” kicked back at me. I couldn’t find any refernce to dport in man. Took a close look at other entries in iptables and found the answer.
The command should be:
# iptables -I INPUT -p tcp –dport 80 -j ACCEPT
# /sbin/service iptables save
Worked perfectly in CentOS 6.4
Thanks for the tutorial it has been a great help.
The font is making it hard to read. There are suppose to be two – – before dport. Hope this helps someone else.
Nice tutorial. I was trying to install BackupPC from source on CentOS 6.3 and kept running into bother getting the CGI to work properly.
Thank god for package managers! 😀
The installation worked fine, but I can’t access the host from my workstation. The host address is http://10.0.0.5/BackupPC. Here’s my iptables:
# Generated by iptables-save v1.4.7 on Mon Feb 11 14:14:18 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [32:3952]
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT
What else should I check? I can ping the host fine from my workstation.
Verify if Apache is already running. From your workstation, point your browser to http://10.0.0.5. You should get the Apache initial page otherwise, you may need to start it… 🙂
[root@boron ~]# service httpd status
httpd (pid 1357) is running…
Great Information. Thanks!
On CentOS 6.3 with DirectAdmin is have the follow error:
Error: Package: BackupPC-3.2.1-10.el6.x86_64 (epel)
Requires: httpd
Error: Package: BackupPC-3.2.1-10.el6.x86_64 (epel)
Requires: perl(Net::FTP::RetrHandle)
Error: Package: BackupPC-3.2.1-10.el6.x86_64 (epel)
Requires: perl(Net::FTP::AutoReconnect)
You could try using –skip-broken to work around the problem
You could try running: rpm -Va –nofiles –nodigest
Great write up. This was exactly what I needed to this backuppc off the ground. Thanks for taking the time to write this out.
Very nice post. I just stumbled upon your weblog and wished to say that
I’ve really enjoyed surfing around your blog posts. In any case I will be subscribing to your rss feed and I hope you write again very soon!
All Work for me.
Just one thing:
I have a web site in my centos. If i change the apache user to backuppc, i can´t connect with my databases. What can i do?
You can, I think, use the username you currently use for the other website. In my VM lab, I used www-data for Apache user and group and it worked fine. Just make sure the BackupPC database uses the same user credential. 🙂
Grandios!!!!!
only this works fine “–dport ” not “-dport”iptables -I INPUT -p tcp –dport 80 -j ACCEPT
Thanks!
Hello. I got thi erro when making full backup
2015-03-01 17:10:32 full backup started for directory /
2015-03-01 17:10:33 Got fatal error during xfer (Unable to read 4 bytes)
2015-03-01 17:10:38 Backup aborted (Unable to read 4 bytes)
Please help me fix this.
Czarek.
Which backup client did you attempt to do a full backup?