๐ŸŽฅ Video Tutorial


Today Iโ€™m building a small & simple home NAS for multimedia ๐ŸŽฅ๐ŸŽถ

๐Ÿ’ก Hardware used:

  • ๐Ÿ’ฝ Old IDE HDD in USB enclosure
  • ๐ŸŠ Orange Pi Zero (cheap SBC from AliExpress)

๐Ÿง  OS choice:

  • ๐Ÿง Armbian โ€” lightweight and perfect for Orange Pi

โฌ‡๏ธ Download OS from: armbian.com scr1


๐Ÿ’พ Flash OS to SD card

I used balenaEtcher ๐Ÿ”ฅ (balena.io) scr2 Steps:

  • โ–ถ๏ธ Run balenaEtcher
  • ๐Ÿ“‚ Click Flash from file โ†’ select OS image
  • ๐Ÿ’ฟ Click Select target โ†’ choose SD card
  • โšก Press Flash! and wait scr3

๐Ÿ”Œ First boot & connection

  1. Insert SD card into ๐ŸŠ Orange Pi
  2. Connect:

  3. ๐Ÿ”Œ Power

  4. ๐ŸŒ Ethernet
  5. ๐Ÿ’ฝ HDD

๐Ÿ“ก Find IP via router DHCP table (or use UART if youโ€™re hardcore ๐Ÿ˜Ž)

๐Ÿ”‘ Connect via SSH (PuTTY):

  • user: root
  • pass: 1234

โš ๏ธ Change password when prompted scr4


๐Ÿ’ฟ Move system to HDD

Run:

nand-sata-install

scr5

Options:

  • Boot from SD ๐Ÿ’พ scr6
  • Select HDD ๐Ÿ’ฝ scr7
  • Filesystem: ext4 scr8

๐Ÿ”„ Reboot after install


๐Ÿ“ Create storage folder

cd /
mkdir Storage
chmod 777 Storage
ls -la

scr9

โœ… Now /Storage accessed for everyone (read/write)


๐ŸŒŠ Install Transmission (torrent client)

sudo apt install transmission-daemon

scr10

โ›” Stop service before config:

systemctl stop transmission-daemon

scr11

โœ๏ธ Edit config:

nano /etc/transmission-daemon/settings.json

scr12

Change:

"download-dir": "/Storage",
"incomplete-dir": "/Storage/Incomplete",
"incomplete-dir-enabled": true,
"rpc-authentication-required": false,
"rpc-bind-address": "0.0.0.0",
"rpc-whitelist-enabled": false

scr13

โ–ถ๏ธ Start again:

systemctl start transmission-daemon

scr14

systemctl status transmission-daemon

scr15

๐ŸŒ Web UI:

http://IP:9091

scr16

๐Ÿ‘ค Run Transmission as nobody

Edit:

nano /etc/init.d/transmission-daemon

scr17

USER=nobody:nogroup

scr18

Also:

nano /lib/systemd/system/transmission-daemon.service

scr19

User=nobody

scr20

Reload:

systemctl daemon-reload

scr21

systemctl status transmission-daemon.service

scr22 Fix permissions:

chown -R nobody:nogroup /var/lib/transmission-daemon
chown -R nobody:nogroup /etc/transmission-daemon

scr23

๐Ÿ–ฅ๏ธ Install Samba (Windows sharing)

sudo apt install samba

scr24

nano /etc/samba/smb.conf

scr25 โš™๏ธ Add:

security = user
map to guest = bad password

scr26 ๐Ÿ“‚ Share:

[DLNA-NAS]
    path = /Storage
    guest ok = yes
    read only = no
    create mask = 0777
    directory mask = 0777

scr27 ๐Ÿ”„ Restart:

systemctl restart smbd

Try to copy file on Samba storage: scr28


scr29

๐ŸŽฌ Install MiniDLNA

sudo apt install minidlna

scr30

nano /etc/minidlna.conf

scr31 Set:

media_dir=/Storage

scr32 Restart:

systemctl restart minidlna

scr33 ๐Ÿ“บ Now stream to TV / PC ๐ŸŽ‰ scr34


๐ŸŒ Web server (lighttpd)

sudo apt install lighttpd

scr35 Check: scr36 ๐Ÿงน Clean default page:

cd /var/www/html
rm *

scr37

๐Ÿ Install Python web control

sudo apt install python3 python3-pip

scr38

pip install bottle

scr39 Create file:

nano poweroff.py

scr40

import os
from bottle import route, run

@route('/')
def index(name):
    if name == "power":
        os.system("sudo shutdown -h now")

run(host='0.0.0.0', port=8080)

๐Ÿ”„ Autostart script

nano /etc/rc.local

scr41 Add:

python3 /root/poweroff.py &

scr42 Reboot:

sudo reboot

scr43 Check:

ss -4nlp

scr44

๐Ÿงพ Simple NAS web UI

nano /var/www/html/index.html

scr21

Add HTML ๐Ÿ‘‡

<!DOCTYPE html>
<html>
<head>
<style>
.container { position: relative; }
.button {
  background-color: #4CAF50;
  border: none;
  color: white;
  padding: 15px 32px;
  text-align: center;
  font-size: 16px;
  margin: 4px;
  cursor: pointer;
  width:100%;
}
.center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
.button2 {background-color: #008CBA;}
</style>
</head>
<body>

<h1 style="text-align:center;">SZ_DLNA-NAS Web page</h1>

<div class="center">
  <button class="button button2" onclick="window.location.href=':9091'">Transmission</button>
  <br>
  <button class="button button2" onclick="window.location.href=':8200'">miniDLNA</button>
</div>

</body>
</html>

โœ… Final result

๐ŸŽ‰ Thatโ€™s it!

๐Ÿ’ช Iโ€™ve been using this NAS for ~6 months:

  • ๐Ÿ“ฅ Downloading torrents
  • ๐ŸŽฌ Streaming series locally
  • โšก Works stable and fast

๐Ÿ’ก Cheap, simple, and ั€ะตะฐะปัŒะฝะพ useful DIY project ๐Ÿ˜Ž

scr46