feat: Initial commit

This commit is contained in:
2025-02-19 17:01:08 -05:00
commit e0fb6129ad
2362 changed files with 325107 additions and 0 deletions

View File

@@ -0,0 +1,128 @@
---
tags: programming, networking, nas, how-to
---
# UNVR as NAS
In this post, I'm going to show how to setup a Samba server on a Ubiquity UNVR so that it can be
used as NAS (network attached storage). Be aware that this should be done with caution and may void
any warranty on your UNVR as we are using it for purposes beyond it's original intent. It's also
possible that this setup will break when / if updating the UNVR software. With that said, let's jump
in.
This post follows along with
[this reddit post](https://www.reddit.com/r/Ubiquiti/comments/11o7v8l/how_to_use_the_unvr_as_a_nas_instructions/),
with some adaptations to get it to work on the latest Unifi-OS release of `3.2.12`.
## Step One - Setup SSH & Login
In your unifi network console you need to enable the `SSH` login option and set a secure password
for the root user to login to the UNVR.
![ssh.png](/articles/images/2024-03-15-ssh.png)
Once that is complete you can login to your UNVR using your terminal and the IP address of your UNVR
on your network.
`ssh root@192.168.1.10`
## Step Two - Install Samba
First, we'll update the package registry information.
`apt-get update`
Next, install samba.
`apt-get install samba`
## Step Three - Setup Samba
In order to edit the configuration we are going to need to install your terminal based text editor
of choice (generally nano or vim), for me I will install vim.
`apt-get install vim`
Create a backup of the default configuration.
`cp /etc/samba/smb.conf /etc/samba/smb.conf.bak`
Open the configuration file to be edited.
`vim /etc/samba/smb.conf`
Just above the `Share Definitions` section of the configuration, I added some global settings to
make the samba server act better for time machine backups.
```
#======================= MacOS Client Optimizations =======================
vfs objects = fruit streams_xattr
fruit:metadata = stream
fruit:model = MacSamba
fruit:posix_rename = yes
fruit:veto_appledouble = no
fruit:nfs_aces = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
```
Also because we want users we create to be able to read and write to their home directories created
on the samba server, we need to change the option under the `[homes]` share definition to be
`read only = no`.
That is our primary configuration. You can add more share definitions at the bottom of the file to
suit your use case, there are decent examples of this in the original reddit post, linked in the
beginning.
Save and exit the file.
`:wq`
## Step Four - Start Samba
Use the following command to start the samba server.
`sudo service smbd start`
You can check the status, by running the following command.
`systemctl status smbd`
![status](/articles/images/2024-03-15-status.png)
Enable the samba server to start on boot.
`systemctl enable smbd.service`
## Step Five - Create Users
Create a user with a home directory that they can use.
`useradd --create-home michael`
Give the user a password to login to the samba server.
`smbpasswd michael`
## Step Six - Login to Samba Server from Client
In the `Finder` app on macOS you can type `⌘k` to connect to a server.
In the text field enter `smb://<USER>@<UNVR_IP>` to connect to the samba server.
![connect](/articles/images/2024-03-15-connect.png)
You can also automatically connect to the server when you login to your client device, for this to
work you need the credentials to be stored in your keychain (ticking the box in the step above when
you first connect to the server).
This is found in `System Settings -> General -> Login Items -> Open at Login`. Click the plus button
and select the volume you would like to mount at login.
![login](/articles/images/2024-03-15-login.png)
Once you have it setup so that the server is connected on login, you can also set it up as location
for Time Machine Backups. `System Settings -> General -> Time Machine`
![time-machine](/articles/images/2024-03-15-time-machine.png)