OK, my issue was that the static content was stored at /var/www/backuppc
and for some reason nginx proc on OpenBSD can never access this
directory, even though the user could.
changing nginx config to be /var/www/htdocs and then doing
cd /var/www/htdocs/
ln -s ../backuppc .
solved the issue.
All is working perfectly now. Thanks for the help :)
The full howto below.
This is how to get backuppc 3.3.2p3 working on OpenBSD 7.6, including
the web admin.
!!! todo
- switch out nginx for httpd if possible
- update to backuppc 4.x (ports on 7.6 has 3.x)
- email issues to mailing list
- mention the readme needs updating (there is no apache)
- configure email
```bash
pkg_add backuppc
```
Add a webserver to front the fcgi.
```bash
pkg_add nginx
```
Populate the nginx config: `/etc/nginx/nginx.conf`
(Only relevant parts of the config)
```
server {
listen 8888;
listen [::]:8888;
server_name node1.example.com;
root /var/www/htdocs;
location /backuppc/ {
}
location /BackupPC_Admin/ {
auth_basic "BackupPC";
auth_basic_user_file backuppc.users;
fastcgi_pass 127.0.0.1:1028;
fastcgi_split_path_info ^(/cgi-bin/[^/]+)(.*);
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param SCRIPT_NAME $document_uri;
include fastcgi_params;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root htdocs;
}
```
Then create a link so the web server can access the static content:
```bash
cd /var/www/htdocs/
ln -s ../backuppc .
```
Create the htpasswd file:
```bash
mkdir -p /var/www/etc/nginx
htpasswd /var/www/etc/nginx/backuppc.users backuppc
chown www /var/www/etc/nginx/backuppc.users backuppc
```
`backuppc` would fail to start with missing programs it expects
(relating to backing up windows hosts). I don't need these, so I'll
work around it like this for now.
```bash
install -o root -g bin -m 0755 /dev/null /usr/local/bin/smbclient
install -o root -g bin -m 0755 /dev/null /usr/local/bin/nmblookup
```
Likewise `wwbackuppc` would fail to start with some missing perl
libraries, we install them like so:
```bash
pkg_add p5-CGI p5-CGI-Fast
```
The `_backuppc` user by default has `/var/empty` as it's home
directory. AFAIK, this should rather be `/var/db/backuppc` so that
the `_backuppc` user can create a ssh private key and accept the public
keys of the remote hosts in it's `~/.ssh`. Additionally I configure a
minimal bash to make life more pleasant working as the user.
```bash
export EDITOR=mg && vipw # and change the home dir
chsh -s /usr/local/bin/bash _backuppc
cp -r /etc/skel/{.ssh,.profile,.login} /var/db/backuppc
```
Append this into the users `.profile`:
```bash
if [ -n "$BASH_VERSION" ]; then
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
```
And create a `.bashrc` with this:
```bash
# -*- mode: sh -*-
# If not running interactively, do nothing.
[ -z "$PS1" ] && return
PS1="\u@\h \w \$ "
###########
# History #
###########
# I dont' want ignorespace in HISTCONTROL because I paste commands
# with leading spaces and I do want them remembered. Some people like
# to add ignorespace to HISTCONTROL so they can get the shell to not
# store dangerous commands or commands that have secrets in I don't
# want written to disk and stored in plain text, though I don't use it like
that.
HISTCONTROL=erasedups:ignoredups
HISTSIZE=10000
HISTTIMEFORMAT='%Y-%m-%d %H:%M '
HISTIGNORE="cd:pwd:ls:l:ll:fg:bg:jobs:j"
HISTFILESIZE=9999
# Double check of history substitutions.
shopt -s histverify
# All terminals use .bash_history file without overwriting it.
shopt -s histappend
###########
# aliases #
###########
alias ll='ls -lh'
```
Lastly fix the perms: `chown _backuppc:_backuppc
/var/db/backuppc/{.ssh,.profile,.login,.bashrc}`
Next, create an ssh key for and as the `_backuppc` user.
```bash
ssh-keygen -t ed25519
```
Then install the `_backuppc` ssh public key in the target hosts
`authorized_keys` file.
Now as the `_backuppc` user, connect to the target uses ssh and accept
it's public key (if it's correct):
```bash
ssh root@clientnode
ssh [email protected]
ssh [email protected]
```
Next, update this in the `config.pl` with these changes:
```
$Conf{ServerHost} = 'node1.example.com';
$Conf{XferMethod} = 'rsync';
$Conf{CgiAdminUsers} = 'backuppc';
$Conf{CgiURL} = 'http://node1.example.com:8888/BackupPC_Admin/;
```
I have a large `/data` file system which is backed by RAID5 using
bioctl, so I'd prefer to store my backups there. I move it there like
so:
```bash
rsync -aHSx /var/db/backuppc/ /data/backuppc/
rm -rf /var/db/backuppc/
ln -s /data/backuppc /var/db/backuppc
```
Enable and start all:
```bash
rcctl enable backuppc ; rcctl enable wwbackuppc ; rcctl enable nginx
rcctl start backuppc ; rcctl start wwbackuppc ; rcctl start nginx
```
Populate the individual host config files under `/etc/backuppc/pc/` dir.
Browse and login at http://node1.example.com:8888/backuppc
_______________________________________________
BackupPC-users mailing list
[email protected]
List: https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki: https://github.com/backuppc/backuppc/wiki
Project: https://backuppc.github.io/backuppc/