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 r...@clientnode.example.com
ssh root@192.168.1.7
```

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
BackupPC-users@lists.sourceforge.net
List:    https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki:    https://github.com/backuppc/backuppc/wiki
Project: https://backuppc.github.io/backuppc/

Reply via email to