💻

Orange Pi Zero3自宅サーバーのすゝめ

に公開

概要・TL;DR

Orange Pi Zero3はGigabit LAN 搭載の激安SBCです.この記事では,このボードを使った自宅サーバーのセットアップを,初心者でも分かるように簡単に解説いたします.

なぜOrange Pi Zero3か

皆さんはSBC(シングルボードコンピュータ)を使っていますか.多くの方はRaspberry Piなどでご存知だと思います.Raspberry Pi以外にも各社の特色を持ったSBCがこの世には数多くあります.Orange PiはShenzhen Xunlong Softwareによって開発されているSBCで,Zero3はRaspberry PiでいうところのRaspberry Pi Zeroの3番目のモデルに当たります.
Orange Pi - Orangepi

Orange Pi Zero3は簡易な自宅サーバーに最適です.

執筆時点(2025/09/27)では以上の条件を満たす最も適したSBCがOrange Pi Zero3です.私の調べた範囲ではGigabit LANが使えるSBCの中で最も安価なものがこちらでした.
Orange Pi Zero3
Orange Pi Zero3

必要なもの

  • Orange Pi Zero3
  • microSD card (イメージ書き込み用)
  • ヒートガン (技適対策で使用します.)
  • [USB-シリアル変換モジュール and ジャンパ線] or [micro HDMI変換 and モニター] (初回起動に必要です.)

技適対策

残念ながら執筆時点(2025/09/27)でOrange Pi Zero3は技適を取得しておらず,日本国内でそのまま電源を入れると電波法に違反してしまいます.この制限を合法的かつ安全に回避するためにはハードウェア的に絶対に電波が飛ばないようにします.そのために基板上の無線モジュールをヒートガン等を用いて取り外す必要があります.
ヒートガンとOrange Pi Zero3
ヒートガンとOrange Pi Zero3
取り外したい無線モジュール以外を熱から保護するために,このようにアルミホイルで包み,カプトンテープで固定します.
Orange Pi Zero3のホイル焼き
Orange Pi Zero3のホイル焼き
数十秒ほど熱を当てれば簡単に合法Orange Pi Zero3が手に入ります.
無線モジュールないない
無線モジュールないない

初回起動まで

Orange Pi Zero3で動くOSは

  • Orange Pi OS (Arch)
  • Debian
  • Ubuntu
  • Armbian
    etc.
    と数多くあります.今回はサーバー用途に適しているDebianのイメージを用いました.
    イメージはこちらからダウンロードできます.
    リンク先のGoogle DriveからOrangepizero3_1.0.4_debian_bookworm_server_linux6.1.31.7zをダウンロードしました.

ダウンロードできたら,xzコマンドで展開します.

xz -d ./Orangepizero3_1.0.4_debian_bookworm_server_linux6.1.31.7z

展開したものをmicroSD cardにddコマンドで書き込みます.

sudo dd if=./Orangepizero3_1.0.4_debian_bookworm_server_linux6.1.31.img of=/dev/sdX bs=4M status=progress && sync

(/dev/sdXの部分はご自身の環境に合わせて変更してください.lsblkコマンドで確認できます.)
書き込みが終了したらOrange Pi Zero3に差し込みます.裏面にmicro SDスロットがあります.

Orange Pi Zero3の初回起動ではセットアップのためにUSB-シリアル変換モジュールもしくはmicro HDMI変換が必要となります.この記事ではUSB-シリアル変換モジュールを用います.

orange Pi Zero3 USB-シリアル変換モジュール
GND GND
RX TX
TX RX

このようにジャンパ線で接続します.

USB-シリアル変換モジュールを作業用PCに繋ぎ,ttyに接続します.

sudo screen /dev/ttyUSB0 115200

screenコマンドを使っていますが他のものでも大丈夫です.WindowsならTeraTermなどで行ってください.

Orange Pi Zero3をUSB Type-Cで電源に繋ぎます.電源を入れるとLEDが光ります.
ttyに起動ログが見えていれば成功です.

セットアップ

sshで接続するまで

rootユーザにはパスワードorangepiでログインできます.
LANケーブルをルータに接続してDHCPで降ってきたIPを確認します.

ip a

end0というNICに割り当てられたIPアドレスをメモしてください.

以降はssh接続で作業します.もうUSB-シリアル変換モジュールは取り外していただいて構いません.
作業用PCからOrange Pi Zero3に接続します.

ssh root@192.168.x.x

(192.168.x.x部分はご自身の環境に合わせて変更してください.)

apt & ユーザ etc.

rootにログインしたらセットアップを行っていきます.

apt update && apt upgrade -y

aptのおまじないをしておきます.途中でiperf3について聞かれますが,y/nどちらでも大丈夫です.

作業用ユーザを作成してsudoを使えるようにします.

adduser hoge
usermod -aG sudo hoge

(hogeの部分はご自身の環境に合わせて変更してください.)

この際,セキュリティのためにデフォルトのユーザのパスワードも変更しておきましょう.

passwd root
passwd orangepi

基本的にSDカードしか使わないSBCでは,SMARTは不要です.サービスが有効なままだとsystemctl statusdegradedになるため無効化します.

systemctl disable --now smartmontools.service
systemctl reset-failed

ネットワーク周り

ホスト名を変更します.

sed -i 's/^orangepizero3$/hoge/' /etc/hostname
sed -i 's/\borangepizero3\b/hoge/g' /etc/hosts

(hogeの部分はご自身の環境に合わせて変更してください.)

MACアドレスを変更します.(必須ではないので必要なければスキップしてください.)

nmcli connection modify "Wired connection 1" ethernet.cloned-mac-address 36:43:64:11:45:14 # ユニークなものにする

(36:43:64:11:45:14の部分はご自身の環境に合わせて変更してください.)

プライベートIPアドレスを変更し,静的IPにします.

nmcli con mod "Wired connection 1" ipv4.addresses 192.168.x.x/24 # IPアドレスを変更
nmcli con mod "Wired connection 1" ipv4.gateway 192.168.x.1 # ルータのIPを書く
nmcli con mod "Wired connection 1" ipv4.method manual # 静的IPにする

(192.168.x.x/24, 192.168.x.1の部分はご自身の環境に合わせて変更してください.)

DNS設定を変更します.

nmcli con mod "Wired connection 1" ipv4.dns "1.1.1.1 8.8.8.8"

ここではCloudflareとGoogleのDNSサーバを指定しています.必要に応じて変更してください.

ここまで実行したら反映のための再起動の前にルータ側で先程の内容を設定しておきます.私の場合はMACアドレスとプライベートIPアドレスを指定して静的IPに変更できました.
設定が終わったら再起動します.

reboot

1分足らずで再度ログインできるようになるはずです.
正しく設定できているか確認しておきましょう.

ip a
ping -c 4 google.com

sshの設定

外部にsshを安全に公開するための設定を行います.
公開鍵認証で接続できるようにします.あらかじめ作業用PCで生成しておいた公開鍵をOrange Pi Zero3に配置します.(公開鍵が未設定であればssh-keygen -t ED25519で生成できます.)
作業用PCで以下を実行してください.

ssh-copy-id -i ~/.ssh/id_ed25519.pub hoge@192.168.x.x

(hogeの部分はご自身の環境に合わせて変更してください.)

Orange Pi Zero3でsshの設定を変更します.

vim /etc/ssh/sshd_config

以下の項目を変更または追記してください.

sshd_config
PermitRootLogin no # rootユーザでのログインを禁止する
PasswordAuthentication no # パスワード認証を禁止する (公開鍵認証のみにする)

ファイアウォールの設定

今回はセットアップが簡単なufwを使います.iptablesnftablesでも大丈夫です.

ssh用に22/tcpを解放し,有効化します.

apt install ufw
ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw enable

DDNSの設定

静的グローバルIPをISPと契約している場合は不要です.今回はCloudflareで取得したドメインを使いました.

Cloudflareの管理画面で事前に必要な作業をします.
API トークン | Cloudflare
上記のリンク先からGlobal API Key(APIトークン)を取得します.

DNSレコードの設定をします.使用するドメインのDNSレコードを変更します.
下の画像のようにAレコードを設定します.ddnsで設定をするのでコンテンツの部分は適当でも大丈夫です.名前はサブドメインにしたい文字列にしてください.*でサブドメインなしにできます.
DNSレコードの設定
DNSレコードの設定

ddclientで設定します.

apt install libio-socket-ssl-perl ddclient
vim /etc/ddclient.conf

ddclient.confを設定します.

ddclient.conf
protocol=cloudflare
use=web,web=ipinfo.io/ip
ttl=1

zone=example.com
login=hoge@example.com
password='global1145141919810364364'

subdomain.example.com

(ご自身の環境に合わせて変更してください.)

下記の記事を参考にさせていただきました.ありがとうございました.

https://zenn.dev/akaregi/articles/4a0db32a4d40a7#設定

ddclientの設定が完了したらsystemdでサービスを有効化&起動します.

systemctl enable --now ddclient.service

Cloudflareのレコード管理画面からコンテンツ(IPアドレス)が正しく変更されているか確認しましょう.

ルータ側でポート開放

ルータ側でポート開放します.設定したプライベートIPアドレスに対してssh用にTCPの22番ポートを解放しましょう.私は全ての操作をOrange Pi Zero3側からできるようにするため,DMZに配置しました.ただし,DMZはセキュリティ的に危険が大きいので通常は必要なポートだけを個別に開放する方法を推奨します.DMZを用いる場合は必ずファイアウォールを併用してください.

総括

お疲れ様でした.以上でCloudflareで取得したドメインを使って作業用PCから公開鍵認証でssh接続できるところまで設定が終わりました.

皆さんも良き自宅サーバーライフをお送りください.

自宅サーバー(Orange Pi Zero3)運用風景
自宅サーバー(Orange Pi Zero3)運用風景

P.S. このサーバーはプロキシサーバーにする予定です.気が向いたらそちらも記事にします.

Discussion