【デジタル自主】076動画ホスティングの解決策

このコミットが含まれているのは:
守矢諏訪子 2023-12-11 01:15:43 +09:00
コミット c6e414ed09
13個のファイルの変更893行の追加36行の削除

バイナリ
ass/4CUzz0i5QI2FoYuKotvAAQ.jpg ノーマルファイル

バイナリファイルは表示されません。

変更後

幅:  |  高さ:  |  サイズ: 490 KiB

バイナリ
ass/5VLgmL3DSTyoItyvOILtRw.jpg ノーマルファイル

バイナリファイルは表示されません。

変更後

幅:  |  高さ:  |  サイズ: 548 KiB

バイナリ
ass/DKp6BGXWTYu4JnBZ1biZPw.jpg ノーマルファイル

バイナリファイルは表示されません。

変更後

幅:  |  高さ:  |  サイズ: 612 KiB

バイナリ
ass/JePPSZafQn25uCJxvFaKGw.jpg ノーマルファイル

バイナリファイルは表示されません。

変更後

幅:  |  高さ:  |  サイズ: 513 KiB

ファイルの表示

@ -3,13 +3,300 @@
<id>gemini://technicalsuwako.moe</id>
<title>テクニカル諏訪子</title>
<updated>2023-12-05T00:00:00Z</updated>
<updated>2023-12-11T00:00:00Z</updated>
<author><name>テクニカル諏訪子</name></author>
<link href="gemini://technicalsuwako.moe" rel="alternate"></link>
<entry>
<id>blog/digital-autonomy-076video-hosting.gmi</id>
<author><name>凛</name></author>
<title type="html">【デジタル自主】076動画ホスティングの解決策</title>
<published>2023-12-11T00:00:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="デジタル自主"></category>
<category term="freebsd"></category>
<category term="openbsd"></category>
<category term="bsd"></category>
<category term="nfs"></category>
<category term="relayd"></category>
<category term="nas"></category>
<category term="peertube"></category>
<category term="ネットワーク"></category>
<link href="gemini://technicalsuwako.moe/blog/digital-autonomy-076video-hosting.gmi" rel="alternate"></link>
<content type="html">
&lt;p&gt;PeerTubeのホスティングと言えば、「高額」というイメージが浮かびます。&lt;br /&gt;
しかし、デジタル自主を理解すれば、高額な費用は必要ありません。&lt;br /&gt;
あたしはストレージやトラフィックの使用量に関わらず、毎月1,200円を支払っています。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;必要な物&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;古いパソコン3台(秋葉原でのジャンク品を選ぶ事を勧めます)&lt;/li&gt;
&lt;li&gt;枚1 TiBのSSD(勧め &lt;a href=&#34;https://www.amazon.co.jp/gp/product/B0BYZFB8D6&#34;&gt;https://www.amazon.co.jp/gp/product/B0BYZFB8D6&lt;/a&gt; 残念ですが、最近はCRUCIAL MX-500のSSDが凄く高くなりましたので、もう勧めれません)&lt;/li&gt;
&lt;li&gt;枚の大きさがどうでも良いSSD&lt;/li&gt;
&lt;li&gt;ルータ(勧め: &lt;a href=&#34;https://www.amazon.co.jp/gp/product/B08MH4VLR3&#34;&gt;https://www.amazon.co.jp/gp/product/B08MH4VLR3&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;KVMスイッチ(勧め &lt;a href=&#34;https://www.amazon.co.jp/gp/product/B094N5LWKZ&#34;&gt;https://www.amazon.co.jp/gp/product/B094N5LWKZ&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;キーボード(勧め: &lt;a href=&#34;https://www.amazon.co.jp/gp/product/B08M3BQ1TS&#34;&gt;https://www.amazon.co.jp/gp/product/B08M3BQ1TS&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;VGAを対応するモニタ&lt;/li&gt;
&lt;li&gt;インターリンク フレッツ接続ZOOT NEXT(固定IPの為)&lt;/li&gt;
&lt;li&gt;(沢山サーバがあれば)ハブスイッチ(勧め: &lt;a href=&#34;https://www.amazon.co.jp/gp/product/B08YKSR6R8&#34;&gt;https://www.amazon.co.jp/gp/product/B08YKSR6R8&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;つのUSBメモリ(一つはFreeBSDと、一つはOpenBSD)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特にKVMスイッチが必要はありませんが、つのモニタとキーボードを持ったら、とても便利です。\&lt;/p&gt;
&lt;p&gt;OpenBSDを使う理由はセキュリティで、FreeBSDを使う理由はパフォーマンスです。&lt;br /&gt;
一緒に完璧なコンビネーションとなります。&lt;/p&gt;
&lt;h2 id=&#34;usb&#34;&gt;USBメモリを準備して、インストールして下さい&lt;/h2&gt;
&lt;p&gt;FreeBSDとOpenBSDのイメージをダウンロードして下さい。&lt;br /&gt;
=&amp;gt; [https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/14.0/](FreeBSD 14.0-RELEASE)&lt;br /&gt;
=&amp;gt; [https://cdn.openbsd.org/pub/OpenBSD/7.4/amd64/install74.img](OpenBSD 7.4)&lt;/p&gt;
&lt;p&gt;この記事の目的の為に、USBメモリのフラッシュとFreeBSD及びOpenBSDのインストール方法を既に知っていると仮定します。&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;あたしのセットアップ&lt;/h2&gt;
&lt;p&gt;あたしのセットアップは下記のイメージです。
ネットワーク以内のIPは&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;192.168.0.1 = ルータ&lt;/li&gt;
&lt;li&gt;192.168.0.104 = PeerTubeサーバ&lt;/li&gt;
&lt;li&gt;192.168.0.106 = relaydサーバ&lt;/li&gt;
&lt;li&gt;192.168.0.143 = NAS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://ass.technicalsuwako.moe/DKp6BGXWTYu4JnBZ1biZPw.jpg&#34; alt=&#34;&#34; /&gt;
&lt;img src=&#34;https://ass.technicalsuwako.moe/4CUzz0i5QI2FoYuKotvAAQ.jpg&#34; alt=&#34;&#34; /&gt;
&lt;img src=&#34;https://ass.technicalsuwako.moe/JePPSZafQn25uCJxvFaKGw.jpg&#34; alt=&#34;&#34; /&gt;
&lt;img src=&#34;https://ass.technicalsuwako.moe/5VLgmL3DSTyoItyvOILtRw.jpg&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;ちなみに、このネットワークのIPセグメントは下記のイメージです&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 = ルータ&lt;/li&gt;
&lt;li&gt;2〜99 = DHCP&lt;/li&gt;
&lt;li&gt;100 = メインパソコン&lt;/li&gt;
&lt;li&gt;101〜120 = サーバ&lt;/li&gt;
&lt;li&gt;121〜130 = ノートパソコン(イーサネット)&lt;/li&gt;
&lt;li&gt;131〜140 = ノートパソコン(WiFi)&lt;/li&gt;
&lt;li&gt;141〜160 = ネットワーク機器(NAS、WiFiアクセスポイント、防犯カメラ等)&lt;/li&gt;
&lt;li&gt;161〜180 = ゲーム機(ニンテンドースイッチ、ニンテンドー3DS等)&lt;/li&gt;
&lt;li&gt;181〜200 = スマホ、タブパソコン等&lt;/li&gt;
&lt;li&gt;201〜254 = 何もない&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;relaydopenbsd&#34;&gt;サーバrelaydサーバ(OpenBSD)&lt;/h2&gt;
&lt;p&gt;このサーバでOpenBSDを使う理由はセキュリティです。&lt;br /&gt;
ネットワーク外からの接続は全部このサーバに通じます。&lt;/p&gt;
&lt;h3 id=&#34;etcacme-clientconf&#34;&gt;/etc/acme-client.conf&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;#
# $OpenBSD: acme-client.conf,v 1.4 2020/09/17 09:13:06 florian Exp $
#
authority letsencrypt {
api url &amp;#34;https://acme-v02.api.letsencrypt.org/directory&amp;#34;
account key &amp;#34;/etc/acme/letsencrypt-privkey.pem&amp;#34;
}
domain 076.moe {
alternative names {
www.076.moe,
stopsdgs.076.moe,
stopsmaho.076.moe,
mitra.076.moe,
mixi.076.moe,
video.076.moe,
imgproxy.076.moe
}
domain key &amp;#34;/etc/ssl/private/076.moe.key&amp;#34;
domain full chain certificate &amp;#34;/etc/ssl/076.moe.crt&amp;#34;
sign with letsencrypt
}
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;etchttpdconfssl&#34;&gt;/etc/httpd.conf(SSL証明書を受け取る為)&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;# $OpenBSD: httpd.conf,v 1.22 2020/11/04 10:34:18 denis Exp $
server &amp;#34;default&amp;#34; {
listen on * port 80
root &amp;#34;/htdocs&amp;#34;
location &amp;#34;/.well-known/acme-challenge/*&amp;#34; {
root &amp;#34;/acme&amp;#34;
request strip 2
}
}
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;etcrelaydconf&#34;&gt;/etc/relayd.conf&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;# $OpenBSD: relayd.conf,v 1.5 2018/05/06 20:56:55 benno Exp $
#
# Macros
#
relayd_addr=&amp;#34;0.0.0.0&amp;#34;
insrv4_addr=&amp;#34;192.168.0.104&amp;#34;
router_addr=&amp;#34;192.168.0.106&amp;#34;
table &amp;lt;video&amp;gt; { $insrv4_addr }
http protocol reverse {
tcp { nodelay, sack }
tls ciphers &amp;#34;TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256&amp;#34;
tls keypair &amp;#34;076.moe&amp;#34;
match request header append &amp;#34;X-Forwarded-For&amp;#34; value &amp;#34;$REMOTE_ADDR&amp;#34;
match request header append &amp;#34;X-Forwarded-Port&amp;#34; value &amp;#34;$REMOTE_PORT&amp;#34;
match response header set &amp;#34;X-Frame-Options&amp;#34; value &amp;#34;deny&amp;#34;
match response header set &amp;#34;X-XSS-Protection&amp;#34; value &amp;#34;1; mode=block&amp;#34;
match response header set &amp;#34;X-Content-Type-Options&amp;#34; value &amp;#34;nosniff&amp;#34;
match response header set &amp;#34;Strict-Transport-Security&amp;#34; value &amp;#34;max-age=31536000; includeSubDomains; preload&amp;#34;
match response header set &amp;#34;Permissions-Policy&amp;#34; value &amp;#34;accelerometer=()&amp;#34;
pass request quick header &amp;#34;Host&amp;#34; value &amp;#34;video.076.moe&amp;#34; forward to &amp;lt;video&amp;gt;
return error
pass
}
relay www_tls {
listen on $relayd_addr port 443 tls
protocol reverse
forward to &amp;lt;video&amp;gt; port 9000 check tcp
}
relay www_http {
listen on $relayd_addr port 80
protocol reverse
forward to &amp;lt;video&amp;gt; port 9000 check tcp
}
relay pt {
listen on $relayd_addr port 1935 tls
protocol reverse
forward to &amp;lt;video&amp;gt; port 19355 check tcp
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ポート1935番号は生配信の為です。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;rcctl &lt;span style=&#34;color:#a2f&#34;&gt;enable&lt;/span&gt; httpd
rcctl &lt;span style=&#34;color:#a2f&#34;&gt;enable&lt;/span&gt; relayd
rcctl start httpd
acme-client -v 076.moe
rcctl start relayd
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;nasfreebsd&#34;&gt;サーバNAS(FreeBSD)&lt;/h2&gt;
&lt;p&gt;FreeBSDを使う理由はZFSです。&lt;br /&gt;
インストールしながら、是非「ZFS」→「stripe」を選択して下さい。&lt;/p&gt;
&lt;p&gt;まずはSSDを確認して下さい&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ dmesg | grep ada
ada0 at ahcich0 bus &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt; scbus0 target &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt; lun &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;
ada0: &amp;lt;CT1000MX500SSD1 M3CR046&amp;gt; ACS-3 ATA SATA 3.x device
ada0: Serial Number
ada0: 600.000MB/s transfers &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;SATA 3.x, UDMA6, PIO 512bytes&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;
ada0: Command Queueing enabled
ada0: 953869MB &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;1953525168&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;512&lt;/span&gt; byte sectors&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;
ada1 at ahcich1 bus &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt; scbus1 target &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt; lun &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;
ada1: &amp;lt;Lexar SSD NQ100 960GB SN11873&amp;gt; ACS-4 ATA SATA 3.x device
ada1: Serial Number
ada1: 600.000MB/s transfers &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;SATA 3.x, UDMA6, PIO 512bytes&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;
ada1: Command Queueing enabled
ada1: 915715MB &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;1875385008&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;512&lt;/span&gt; byte sectors&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;
ses0: ada0,pass0 in &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;Slot 00&amp;#39;&lt;/span&gt;, SATA Slot: scbus0 target &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;
ses0: ada1,pass1 in &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;Slot 01&amp;#39;&lt;/span&gt;, SATA Slot: scbus1 target &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ada1を作成しましょう。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ gpart create -s gpt ada1
$ gpart add -t freebsd-zfs -l disk1 ada1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;zpoolを作って下さい。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ zpool create backup ada1p1
$ zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backup 888G 396K 888G - - 0% 0% 1.00x ONLINE -
zroot 920G 180G 740G - - 0% 19% 1.00x ONLINE -
$ zfs create zroot/peertube
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ada1はバックアップ用に使用しますが、具体的な方法についてはこの記事では説明しません。&lt;/p&gt;
&lt;p&gt;peertubeユーザーとグループを創作して下さい。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ pw groupadd peertube
$ pw useradd peertube -g peertube -s /usr/sbin/nologin -d /nonexistent -c &lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;PeerTube User&amp;#34;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;etcexports&#34;&gt;/etc/exports&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;/zroot/peertube -maproot=peertube:peertube 192.168.0.104
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;etcrcconf&#34;&gt;/etc/rc.conf&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;clear_tmp_enable=&amp;#34;YES&amp;#34;
syslogd_flags=&amp;#34;-ss&amp;#34;
hostname=&amp;#34;freebsdnas&amp;#34;
keymap=&amp;#34;jp.kbd&amp;#34;
ifconfig_re0=&amp;#34;inet 192.168.0.143 netmask 255.255.255.0&amp;#34;
defaultrouter=&amp;#34;192.168.0.1&amp;#34;
local_unbound_enable=&amp;#34;YES&amp;#34;
sshd_enable=&amp;#34;YES&amp;#34;
ntpd_enable=&amp;#34;YES&amp;#34;
rsyncd_enable=&amp;#34;YES&amp;#34;
moused_nondefault_enable=&amp;#34;NO&amp;#34;
# Set dumpdev to &amp;#34;AUTO&amp;#34; to enable crash dumps, &amp;#34;NO&amp;#34; to disable
dumpdev=&amp;#34;AUTO&amp;#34;
zfs_enable=&amp;#34;YES&amp;#34;
zfs_enable=&amp;#34;YES&amp;#34;
rpcbind_enable=&amp;#34;YES&amp;#34;
nfs_server_enable=&amp;#34;YES&amp;#34;
nfsd_flags=&amp;#34;-u -t -n 2&amp;#34;
mountd_enable=&amp;#34;YES&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;サービスを起動して下さい。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ service rpcbind start
$ service mountd start
$ service nfsd start
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;peertubefreebsd&#34;&gt;サーバPeerTubeサーバ(FreeBSD)&lt;/h2&gt;
&lt;p&gt;FreeBSDを使う理由は、PeerTubeの開発者がOpenBSDをサポートしていない為です。&lt;br /&gt;
いつでも通りにPeerTubeをインストールして下さい(nginxの設定が不要です)。&lt;/p&gt;
&lt;h3 id=&#34;etcrcconf-1&#34;&gt;/etc/rc.conf&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#b8860b&#34;&gt;clear_tmp_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;syslogd_flags&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;-ss&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;hostname&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;peertubesrv&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;keymap&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;jp.kbd&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;ifconfig_re0&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;inet 192.168.0.104 netmask 255.255.255.0&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;defaultrouter&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;192.168.0.1&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;local_unbound_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;ifconfig_re0&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;DHCP&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;sshd_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;# Set dumpdev to &amp;#34;AUTO&amp;#34; to enable crash dumps, &amp;#34;NO&amp;#34; to disable&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;dumpdev&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;AUTO&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;zfs_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;shavit_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;postgresql_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;redis_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;postgresql_class&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;postgres&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;peertube_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;nginx_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;nfs_server_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;nfs_client_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ &lt;span style=&#34;color:#a2f&#34;&gt;cd&lt;/span&gt; /var/www/peertube
$ rm -rf storage
$ mkdir storage
$ mount -t nfs 192.168.0.143:/zroot/peertube /var/www/peertube/storage
$ df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 92G 63G 29G 68% /
devfs 1.0K 0B 1.0K 0% /dev
zroot/tmp 29G 3.1M 29G 0% /tmp
zroot/usr/home 36G 7.2G 29G 20% /usr/home
zroot 29G 96K 29G 0% /zroot
zroot/var/audit 29G 96K 29G 0% /var/audit
zroot/var/log 29G 90M 29G 0% /var/log
zroot/usr/ports 31G 2.0G 29G 6% /usr/ports
zroot/var/crash 29G 96K 29G 0% /var/crash
zroot/var/tmp 29G 136K 29G 0% /var/tmp
zroot/var/mail 29G 444K 29G 0% /var/mail
zroot/usr/src 29G 96K 29G 0% /usr/src
192.168.0.143:/zroot/peertube 815G 103G 712G 13% /var/www/peertube/storage
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
<entry>
<id>blog/programming-pyramid-of-doom.gmi</id>
<author><name>凛</name></author>
@ -240,40 +527,5 @@
</content>
</entry>
<entry>
<id>blog/sp-100.gmi</id>
<author><name>凛</name></author>
<title type="html">【】sp 1.0.0登場</title>
<published>2023-11-30T00:00:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="ウエブ開発"></category>
<category term=""></category>
<category term="sp"></category>
<link href="gemini://technicalsuwako.moe/blog/sp-100.gmi" rel="alternate"></link>
<content type="html">
&lt;h2 id=&#34;sp&#34;&gt;spって何?&lt;/h2&gt;
&lt;p&gt;spはシンプルなパスワードマネージャです。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;変更&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;最初リリース&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;ソースコード&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/sp&#34;&gt;Gitler&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
</feed>

ファイルの表示

@ -2,6 +2,7 @@
# 記事一覧
=> /blog/digital-autonomy-076video-hosting.gmi 2023年12月11日 【デジタル自主】076動画ホスティングの解決策
=> /blog/programming-pyramid-of-doom.gmi 2023年12月05日 【プログラミング】アドバイス1:運命のピラミッドを回避
=> /blog/sp-112.gmi 2023年12月01日 【】sp 1.1.2登場
=> /blog/sp-111.gmi 2023年12月01日 【】sp 1.1.1登場

ファイルの表示

@ -0,0 +1,301 @@
=> /blog.gmi ブログ一覧へ
#【デジタル自主】076動画ホスティングの解決策
投稿日2023-12-11
PeerTubeのホスティングと言えば、「高額」というイメージが浮かびます。
しかし、デジタル自主を理解すれば、高額な費用は必要ありません。
あたしはストレージやトラフィックの使用量に関わらず、毎月1,200円を支払っています。
## 必要な物
* 古いパソコン3台(秋葉原でのジャンク品を選ぶ事を勧めます)
* 枚1 TiBのSSD(勧め https://www.amazon.co.jp/gp/product/B0BYZFB8D6 残念ですが、最近はCRUCIAL MX-500のSSDが凄く高くなりましたので、もう勧めれません)
* 枚の大きさがどうでも良いSSD
* ルータ(勧め: https://www.amazon.co.jp/gp/product/B08MH4VLR3 )
* KVMスイッチ(勧め https://www.amazon.co.jp/gp/product/B094N5LWKZ )
* キーボード(勧め: https://www.amazon.co.jp/gp/product/B08M3BQ1TS )
* VGAを対応するモニタ
* インターリンク フレッツ接続ZOOT NEXT(固定IPの為)
* (沢山サーバがあれば)ハブスイッチ(勧め: https://www.amazon.co.jp/gp/product/B08YKSR6R8 )
* つのUSBメモリ(一つはFreeBSDと、一つはOpenBSD)
特にKVMスイッチが必要はありませんが、つのモニタとキーボードを持ったら、とても便利です。
OpenBSDを使う理由はセキュリティで、FreeBSDを使う理由はパフォーマンスです。
一緒に完璧なコンビネーションとなります。
## USBメモリを準備して、インストールして下さい
FreeBSDとOpenBSDのイメージをダウンロードして下さい。
=> https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/14.0/ FreeBSD 14.0-RELEASE
=> https://cdn.openbsd.org/pub/OpenBSD/7.4/amd64/install74.img OpenBSD 7.4
この記事の目的の為に、USBメモリのフラッシュとFreeBSD及びOpenBSDのインストール方法を既に知っていると仮定します。
## あたしのセットアップ
あたしのセットアップは下記のイメージです。
ネットワーク以内のIPは
* 192.168.0.1 = ルータ
* 192.168.0.104 = PeerTubeサーバ
* 192.168.0.106 = relaydサーバ
* 192.168.0.143 = NAS
=> /static/DKp6BGXWTYu4JnBZ1biZPw.jpg
=> /static/4CUzz0i5QI2FoYuKotvAAQ.jpg
=> /static/JePPSZafQn25uCJxvFaKGw.jpg
=> /static/5VLgmL3DSTyoItyvOILtRw.jpg
ちなみに、このネットワークのIPセグメントは下記のイメージです
* 1 = ルータ
* 2〜99 = DHCP
* 100 = メインパソコン
* 101〜120 = サーバ
* 121〜130 = ノートパソコン(イーサネット)
* 131〜140 = ノートパソコン(WiFi)
* 141〜160 = ネットワーク機器(NAS、WiFiアクセスポイント、防犯カメラ等)
* 161〜180 = ゲーム機(ニンテンドースイッチ、ニンテンドー3DS等)
* 181〜200 = スマホ、タブパソコン等
* 201〜254 = 何もない
## サーバrelaydサーバ(OpenBSD)
このサーバでOpenBSDを使う理由はセキュリティです。
ネットワーク外からの接続は全部このサーバに通じます。
### /etc/acme-client.conf
```
#
# $OpenBSD: acme-client.conf,v 1.4 2020/09/17 09:13:06 florian Exp $
#
authority letsencrypt {
api url "https://acme-v02.api.letsencrypt.org/directory"
account key "/etc/acme/letsencrypt-privkey.pem"
}
domain 076.moe {
alternative names {
www.076.moe,
stopsdgs.076.moe,
stopsmaho.076.moe,
mitra.076.moe,
mixi.076.moe,
video.076.moe,
imgproxy.076.moe
}
domain key "/etc/ssl/private/076.moe.key"
domain full chain certificate "/etc/ssl/076.moe.crt"
sign with letsencrypt
}
```
### /etc/httpd.conf(SSL証明書を受け取る為)
```
# $OpenBSD: httpd.conf,v 1.22 2020/11/04 10:34:18 denis Exp $
server "default" {
listen on * port 80
root "/htdocs"
location "/.well-known/acme-challenge/*" {
root "/acme"
request strip 2
}
}
```
### /etc/relayd.conf
```
# $OpenBSD: relayd.conf,v 1.5 2018/05/06 20:56:55 benno Exp $
#
# Macros
#
relayd_addr="0.0.0.0"
insrv4_addr="192.168.0.104"
router_addr="192.168.0.106"
table <video> { $insrv4_addr }
http protocol reverse {
tcp { nodelay, sack }
tls ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
tls keypair "076.moe"
match request header append "X-Forwarded-For" value "$REMOTE_ADDR"
match request header append "X-Forwarded-Port" value "$REMOTE_PORT"
match response header set "X-Frame-Options" value "deny"
match response header set "X-XSS-Protection" value "1; mode=block"
match response header set "X-Content-Type-Options" value "nosniff"
match response header set "Strict-Transport-Security" value "max-age=31536000; includeSubDomains; preload"
match response header set "Permissions-Policy" value "accelerometer=()"
pass request quick header "Host" value "video.076.moe" forward to <video>
return error
pass
}
relay www_tls {
listen on $relayd_addr port 443 tls
protocol reverse
forward to <video> port 9000 check tcp
}
relay www_http {
listen on $relayd_addr port 80
protocol reverse
forward to <video> port 9000 check tcp
}
relay pt {
listen on $relayd_addr port 1935 tls
protocol reverse
forward to <video> port 19355 check tcp
}
```
ポート1935番号は生配信の為です。
```sh
rcctl enable httpd
rcctl enable relayd
rcctl start httpd
acme-client -v 076.moe
rcctl start relayd
```
## サーバNAS(FreeBSD)
FreeBSDを使う理由はZFSです。
インストールしながら、是非「ZFS」→「stripe」を選択して下さい。
まずはSSDを確認して下さい
```sh
$ dmesg | grep ada
ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
ada0: <CT1000MX500SSD1 M3CR046> ACS-3 ATA SATA 3.x device
ada0: Serial Number
ada0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 512bytes)
ada0: Command Queueing enabled
ada0: 953869MB (1953525168 512 byte sectors)
ada1 at ahcich1 bus 0 scbus1 target 0 lun 0
ada1: <Lexar SSD NQ100 960GB SN11873> ACS-4 ATA SATA 3.x device
ada1: Serial Number
ada1: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 512bytes)
ada1: Command Queueing enabled
ada1: 915715MB (1875385008 512 byte sectors)
ses0: ada0,pass0 in 'Slot 00', SATA Slot: scbus0 target 0
ses0: ada1,pass1 in 'Slot 01', SATA Slot: scbus1 target 0
```
ada1を作成しましょう。
```sh
$ gpart create -s gpt ada1
$ gpart add -t freebsd-zfs -l disk1 ada1
```
zpoolを作って下さい。
```sh
$ zpool create backup ada1p1
$ zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backup 888G 396K 888G - - 0% 0% 1.00x ONLINE -
zroot 920G 180G 740G - - 0% 19% 1.00x ONLINE -
$ zfs create zroot/peertube
```
ada1はバックアップ用に使用しますが、具体的な方法についてはこの記事では説明しません。
peertubeユーザーとグループを創作して下さい。
```sh
$ pw groupadd peertube
$ pw useradd peertube -g peertube -s /usr/sbin/nologin -d /nonexistent -c "PeerTube User"
```
### /etc/exports
```
/zroot/peertube -maproot=peertube:peertube 192.168.0.104
```
### /etc/rc.conf
```
clear_tmp_enable="YES"
syslogd_flags="-ss"
hostname="freebsdnas"
keymap="jp.kbd"
ifconfig_re0="inet 192.168.0.143 netmask 255.255.255.0"
defaultrouter="192.168.0.1"
local_unbound_enable="YES"
sshd_enable="YES"
ntpd_enable="YES"
rsyncd_enable="YES"
moused_nondefault_enable="NO"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
zfs_enable="YES"
zfs_enable="YES"
rpcbind_enable="YES"
nfs_server_enable="YES"
nfsd_flags="-u -t -n 2"
mountd_enable="YES"
```
サービスを起動して下さい。
```sh
$ service rpcbind start
$ service mountd start
$ service nfsd start
```
## サーバPeerTubeサーバ(FreeBSD)
FreeBSDを使う理由は、PeerTubeの開発者がOpenBSDをサポートしていない為です。
いつでも通りにPeerTubeをインストールして下さい(nginxの設定が不要です)。
### /etc/rc.conf
```sh
clear_tmp_enable="YES"
syslogd_flags="-ss"
hostname="peertubesrv"
keymap="jp.kbd"
ifconfig_re0="inet 192.168.0.104 netmask 255.255.255.0"
defaultrouter="192.168.0.1"
local_unbound_enable="YES"
ifconfig_re0="DHCP"
sshd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
zfs_enable="YES"
shavit_enable="YES"
postgresql_enable="YES"
redis_enable="YES"
postgresql_class="postgres"
peertube_enable="YES"
nginx_enable="NO"
nfs_server_enable="YES"
nfs_client_enable="YES"
```
```sh
$ cd /var/www/peertube
$ rm -rf storage
$ mkdir storage
$ mount -t nfs 192.168.0.143:/zroot/peertube /var/www/peertube/storage
$ df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 92G 63G 29G 68% /
devfs 1.0K 0B 1.0K 0% /dev
zroot/tmp 29G 3.1M 29G 0% /tmp
zroot/usr/home 36G 7.2G 29G 20% /usr/home
zroot 29G 96K 29G 0% /zroot
zroot/var/audit 29G 96K 29G 0% /var/audit
zroot/var/log 29G 90M 29G 0% /var/log
zroot/usr/ports 31G 2.0G 29G 6% /usr/ports
zroot/var/crash 29G 96K 29G 0% /var/crash
zroot/var/tmp 29G 136K 29G 0% /var/tmp
zroot/var/mail 29G 444K 29G 0% /var/mail
zroot/usr/src 29G 96K 29G 0% /usr/src
192.168.0.143:/zroot/peertube 815G 103G 712G 13% /var/www/peertube/storage
```
以上

バイナリ
gemini/static/4CUzz0i5QI2FoYuKotvAAQ.jpg ノーマルファイル

バイナリファイルは表示されません。

変更後

幅:  |  高さ:  |  サイズ: 490 KiB

バイナリ
gemini/static/5VLgmL3DSTyoItyvOILtRw.jpg ノーマルファイル

バイナリファイルは表示されません。

変更後

幅:  |  高さ:  |  サイズ: 548 KiB

バイナリ
gemini/static/DKp6BGXWTYu4JnBZ1biZPw.jpg ノーマルファイル

バイナリファイルは表示されません。

変更後

幅:  |  高さ:  |  サイズ: 612 KiB

バイナリ
gemini/static/JePPSZafQn25uCJxvFaKGw.jpg ノーマルファイル

バイナリファイルは表示されません。

変更後

幅:  |  高さ:  |  サイズ: 513 KiB

ファイルの表示

@ -3,6 +3,7 @@
# avatar = gemini://076.moe/static/suwako.jpg
# description = テクニカル諏訪子様のtwtxtフィード
# link = ホームページ gemini://technicalsuwako.moe
2023-12-11T00:00:00Z09:00 【デジタル自主】076動画ホスティングの解決策 - gemini://technicalsuwako.moe/blog/blog/digital-autonomy-076video-hosting.gmi
2023-12-05T00:00:00Z09:00 【プログラミング】アドバイス1:運命のピラミッドを回避 - gemini://technicalsuwako.moe/blog/blog/programming-pyramid-of-doom.gmi
2023-12-01T13:30:00Z09:00 【】sp 1.1.2登場 - gemini://technicalsuwako.moe/blog/blog/sp-112.gmi
2023-12-01T13:00:00Z09:00 【】sp 1.1.1登場 - gemini://technicalsuwako.moe/blog/blog/sp-111.gmi

ファイルの表示

@ -0,0 +1,302 @@
title: 【デジタル自主】076動画ホスティングの解決策
author: 凛
date: 2023-12-11
tags: jp,blog,デジタル自主,freebsd,openbsd,bsd,nfs,relayd,nas,peertube,ネットワーク
----
PeerTubeのホスティングと言えば、「高額」というイメージが浮かびます。\
しかし、デジタル自主を理解すれば、高額な費用は必要ありません。\
あたしはストレージやトラフィックの使用量に関わらず、毎月1,200円を支払っています。
## 必要な物
* 古いパソコン3台(秋葉原でのジャンク品を選ぶ事を勧めます)
* 枚1 TiBのSSD(勧め [https://www.amazon.co.jp/gp/product/B0BYZFB8D6](https://www.amazon.co.jp/gp/product/B0BYZFB8D6) 残念ですが、最近はCRUCIAL MX-500のSSDが凄く高くなりましたので、もう勧めれません)
* 枚の大きさがどうでも良いSSD
* ルータ(勧め: [https://www.amazon.co.jp/gp/product/B08MH4VLR3](https://www.amazon.co.jp/gp/product/B08MH4VLR3) )
* KVMスイッチ(勧め [https://www.amazon.co.jp/gp/product/B094N5LWKZ](https://www.amazon.co.jp/gp/product/B094N5LWKZ) )
* キーボード(勧め: [https://www.amazon.co.jp/gp/product/B08M3BQ1TS](https://www.amazon.co.jp/gp/product/B08M3BQ1TS) )
* VGAを対応するモニタ
* インターリンク フレッツ接続ZOOT NEXT(固定IPの為)
* (沢山サーバがあれば)ハブスイッチ(勧め: [https://www.amazon.co.jp/gp/product/B08YKSR6R8](https://www.amazon.co.jp/gp/product/B08YKSR6R8) )
* つのUSBメモリ(一つはFreeBSDと、一つはOpenBSD)
特にKVMスイッチが必要はありませんが、つのモニタとキーボードを持ったら、とても便利です。\
OpenBSDを使う理由はセキュリティで、FreeBSDを使う理由はパフォーマンスです。\
一緒に完璧なコンビネーションとなります。
## USBメモリを準備して、インストールして下さい
FreeBSDとOpenBSDのイメージをダウンロードして下さい。\
=> [https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/14.0/](FreeBSD 14.0-RELEASE)\
=> [https://cdn.openbsd.org/pub/OpenBSD/7.4/amd64/install74.img](OpenBSD 7.4)
この記事の目的の為に、USBメモリのフラッシュとFreeBSD及びOpenBSDのインストール方法を既に知っていると仮定します。
## あたしのセットアップ
あたしのセットアップは下記のイメージです。
ネットワーク以内のIPは
* 192.168.0.1 = ルータ
* 192.168.0.104 = PeerTubeサーバ
* 192.168.0.106 = relaydサーバ
* 192.168.0.143 = NAS
![](https://ass.technicalsuwako.moe/DKp6BGXWTYu4JnBZ1biZPw.jpg)
![](https://ass.technicalsuwako.moe/4CUzz0i5QI2FoYuKotvAAQ.jpg)
![](https://ass.technicalsuwako.moe/JePPSZafQn25uCJxvFaKGw.jpg)
![](https://ass.technicalsuwako.moe/5VLgmL3DSTyoItyvOILtRw.jpg)
ちなみに、このネットワークのIPセグメントは下記のイメージです
* 1 = ルータ
* 2〜99 = DHCP
* 100 = メインパソコン
* 101〜120 = サーバ
* 121〜130 = ノートパソコン(イーサネット)
* 131〜140 = ノートパソコン(WiFi)
* 141〜160 = ネットワーク機器(NAS、WiFiアクセスポイント、防犯カメラ等)
* 161〜180 = ゲーム機(ニンテンドースイッチ、ニンテンドー3DS等)
* 181〜200 = スマホ、タブパソコン等
* 201〜254 = 何もない
## サーバrelaydサーバ(OpenBSD)
このサーバでOpenBSDを使う理由はセキュリティです。\
ネットワーク外からの接続は全部このサーバに通じます。
### /etc/acme-client.conf
```
#
# $OpenBSD: acme-client.conf,v 1.4 2020/09/17 09:13:06 florian Exp $
#
authority letsencrypt {
api url "https://acme-v02.api.letsencrypt.org/directory"
account key "/etc/acme/letsencrypt-privkey.pem"
}
domain 076.moe {
alternative names {
www.076.moe,
stopsdgs.076.moe,
stopsmaho.076.moe,
mitra.076.moe,
mixi.076.moe,
video.076.moe,
imgproxy.076.moe
}
domain key "/etc/ssl/private/076.moe.key"
domain full chain certificate "/etc/ssl/076.moe.crt"
sign with letsencrypt
}
```
### /etc/httpd.conf(SSL証明書を受け取る為)
```
# $OpenBSD: httpd.conf,v 1.22 2020/11/04 10:34:18 denis Exp $
server "default" {
listen on * port 80
root "/htdocs"
location "/.well-known/acme-challenge/*" {
root "/acme"
request strip 2
}
}
```
### /etc/relayd.conf
```
# $OpenBSD: relayd.conf,v 1.5 2018/05/06 20:56:55 benno Exp $
#
# Macros
#
relayd_addr="0.0.0.0"
insrv4_addr="192.168.0.104"
router_addr="192.168.0.106"
table <video> { $insrv4_addr }
http protocol reverse {
tcp { nodelay, sack }
tls ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
tls keypair "076.moe"
match request header append "X-Forwarded-For" value "$REMOTE_ADDR"
match request header append "X-Forwarded-Port" value "$REMOTE_PORT"
match response header set "X-Frame-Options" value "deny"
match response header set "X-XSS-Protection" value "1; mode=block"
match response header set "X-Content-Type-Options" value "nosniff"
match response header set "Strict-Transport-Security" value "max-age=31536000; includeSubDomains; preload"
match response header set "Permissions-Policy" value "accelerometer=()"
pass request quick header "Host" value "video.076.moe" forward to <video>
return error
pass
}
relay www_tls {
listen on $relayd_addr port 443 tls
protocol reverse
forward to <video> port 9000 check tcp
}
relay www_http {
listen on $relayd_addr port 80
protocol reverse
forward to <video> port 9000 check tcp
}
relay pt {
listen on $relayd_addr port 1935 tls
protocol reverse
forward to <video> port 19355 check tcp
}
```
ポート1935番号は生配信の為です。
```sh
rcctl enable httpd
rcctl enable relayd
rcctl start httpd
acme-client -v 076.moe
rcctl start relayd
```
## サーバNAS(FreeBSD)
FreeBSDを使う理由はZFSです。\
インストールしながら、是非「ZFS」→「stripe」を選択して下さい。
まずはSSDを確認して下さい
```sh
$ dmesg | grep ada
ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
ada0: <CT1000MX500SSD1 M3CR046> ACS-3 ATA SATA 3.x device
ada0: Serial Number
ada0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 512bytes)
ada0: Command Queueing enabled
ada0: 953869MB (1953525168 512 byte sectors)
ada1 at ahcich1 bus 0 scbus1 target 0 lun 0
ada1: <Lexar SSD NQ100 960GB SN11873> ACS-4 ATA SATA 3.x device
ada1: Serial Number
ada1: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 512bytes)
ada1: Command Queueing enabled
ada1: 915715MB (1875385008 512 byte sectors)
ses0: ada0,pass0 in 'Slot 00', SATA Slot: scbus0 target 0
ses0: ada1,pass1 in 'Slot 01', SATA Slot: scbus1 target 0
```
ada1を作成しましょう。
```sh
$ gpart create -s gpt ada1
$ gpart add -t freebsd-zfs -l disk1 ada1
```
zpoolを作って下さい。
```sh
$ zpool create backup ada1p1
$ zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backup 888G 396K 888G - - 0% 0% 1.00x ONLINE -
zroot 920G 180G 740G - - 0% 19% 1.00x ONLINE -
$ zfs create zroot/peertube
```
ada1はバックアップ用に使用しますが、具体的な方法についてはこの記事では説明しません。
peertubeユーザーとグループを創作して下さい。
```sh
$ pw groupadd peertube
$ pw useradd peertube -g peertube -s /usr/sbin/nologin -d /nonexistent -c "PeerTube User"
```
### /etc/exports
```
/zroot/peertube -maproot=peertube:peertube 192.168.0.104
```
### /etc/rc.conf
```
clear_tmp_enable="YES"
syslogd_flags="-ss"
hostname="freebsdnas"
keymap="jp.kbd"
ifconfig_re0="inet 192.168.0.143 netmask 255.255.255.0"
defaultrouter="192.168.0.1"
local_unbound_enable="YES"
sshd_enable="YES"
ntpd_enable="YES"
rsyncd_enable="YES"
moused_nondefault_enable="NO"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
zfs_enable="YES"
zfs_enable="YES"
rpcbind_enable="YES"
nfs_server_enable="YES"
nfsd_flags="-u -t -n 2"
mountd_enable="YES"
```
サービスを起動して下さい。
```sh
$ service rpcbind start
$ service mountd start
$ service nfsd start
```
## サーバPeerTubeサーバ(FreeBSD)
FreeBSDを使う理由は、PeerTubeの開発者がOpenBSDをサポートしていない為です。\
いつでも通りにPeerTubeをインストールして下さい(nginxの設定が不要です)。
### /etc/rc.conf
```sh
clear_tmp_enable="YES"
syslogd_flags="-ss"
hostname="peertubesrv"
keymap="jp.kbd"
ifconfig_re0="inet 192.168.0.104 netmask 255.255.255.0"
defaultrouter="192.168.0.1"
local_unbound_enable="YES"
ifconfig_re0="DHCP"
sshd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
zfs_enable="YES"
shavit_enable="YES"
postgresql_enable="YES"
redis_enable="YES"
postgresql_class="postgres"
peertube_enable="YES"
nginx_enable="NO"
nfs_server_enable="YES"
nfs_client_enable="YES"
```
```sh
$ cd /var/www/peertube
$ rm -rf storage
$ mkdir storage
$ mount -t nfs 192.168.0.143:/zroot/peertube /var/www/peertube/storage
$ df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 92G 63G 29G 68% /
devfs 1.0K 0B 1.0K 0% /dev
zroot/tmp 29G 3.1M 29G 0% /tmp
zroot/usr/home 36G 7.2G 29G 20% /usr/home
zroot 29G 96K 29G 0% /zroot
zroot/var/audit 29G 96K 29G 0% /var/audit
zroot/var/log 29G 90M 29G 0% /var/log
zroot/usr/ports 31G 2.0G 29G 6% /usr/ports
zroot/var/crash 29G 96K 29G 0% /var/crash
zroot/var/tmp 29G 136K 29G 0% /var/tmp
zroot/var/mail 29G 444K 29G 0% /var/mail
zroot/usr/src 29G 96K 29G 0% /usr/src
192.168.0.143:/zroot/peertube 815G 103G 712G 13% /var/www/peertube/storage
```
以上