Today I will talk about my server setup by request. I setup my server originally for Security cameras because I was tired of proprietary software that every different camera has. My setup right now includes 4 entirely different types of cameras. None of them officially support ONVIF. Every one of my cameras was free so quality was not something I cared for. Today, my server now has my Windows File share (Samba), offsite Sync, Software Raid, Crontab Network Speed monitoring and zoneminder.
Security Camera Software
ZoneMinder - “A full-featured, open source, state-of-the-art video surveillance software system. Monitor your home, office, or wherever you want. Using off the shelf hardware with any camera, you can design a system as large or as small as you need.”
My Cameras
Onsite Fireproof Sync
To avoid paying for cloud services I purchased a fireproof hard drive. I set it up to sync with my raid group and its all set. You can view that article here.
Offsite Sync
I use offsite sync for the security cameras using rsync and a remote ftp server. Unfortunately it would be too expensive to backup my entire media server to the cloud so I only use it for remote storing the camera footage in the event of a theft.
To start this you will need an ftp server credentials to use with the following script. After doing so you can just add it to crontab -e
Crontab file:
@reboot /mnt/4000/home/ldrrp/Scripts/ftpsync.sh
Script:
#!/bin/bash
HOST='hostedftp.com'
USER='username'
PASS='password'
TARGETFOLDER='/'
SOURCEFOLDER='/var/cache/zoneminder/'
while inotifywait -qqr "$SOURCEFOLDER"; do
lftp -f "
open $HOST
user $USER $PASS
lcd $SOURCEFOLDER
set ftp:ssl-allow no
mirror --no-symlinks --reverse --delete --verbose $SOURCEFOLDER $TARGETFOLDER
bye
"
done
Software Raid
I don’t want to spend too much on this setup so software raid we go. I use Raid 5 for its redundancy but increase capacity. I will talk about what I did to get this quickly setup. Depending on your drive count and size this can take anywhere from 2 hours to 24 hours. You can read more about the setup I used.
File Share
Setting up a file share is fairly simple, First download and install samba
apt-get install samba
Then edit the main configuration file:
[global]
workgroup = WORKGROUP
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
server role = standalone server
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=1073741824 SO_SNDBUF=1073741824
min protocol = SMB2
[homes]
comment = Home Directories
browseable = no
read only = no
create mask = 0770
directory mask = 0770
force group = nas
valid users = %S
writeable = yes
path = /mnt/4000/home/%u
veto files = /._*/.DS_Store/
delete veto files = yes
[Shared]
comment = Shared Family Folder
browsable = yes
writable = yes
guest ok = yes
read only = no
directory mask = 0770
create mask = 0770
valid users = ldrrp krystal
force group = nas
path = /mnt/4000/home/Shared
veto files = /._*/.DS_Store/
delete veto files = yes
[security]
comment = Security Cameras
browseable = yes
read only = no
create mask = 0755
directory mask = 0755
valid users = @security
writeable = yes
path = /var/cache/zoneminder
veto files = /._*/.DS_Store/
delete veto files = yes
Then create the groups “nas” and “family” in linux and add your users to it. There is a guide on that.
Finally reboot or restart samba systemctl restart samba
EDIT:
The first time you add a linux user (adduser
) you need to add them to smbpasswd as well.
sudo smbpasswd -a <user>
Speedtest alerts
This one was very simple, I made a simple script in php to send me alerts when my house was not getting the speeds I pay for. You will need to have php-cli, speedtest-cli installed and smtp credentials for email. You can download the scripts
After downloading them, add a line to your schedule tasks in linux using crontab -e
0 8 * * * /usr/bin/php /mnt/4000/home/ldrrp/Scripts/speedtest.php