💾 Archived View for tilde.club › ~technicalsuwako › blog › digital-autonomy-076video-hosting.gmi captured on 2024-05-10 at 11:15:35. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-12-28)
-=-=-=-=-=-=-
投稿日:2023-12-11
PeerTubeのホスティングと言えば、「高額」というイメージが浮かびます。
しかし、デジタル自主を理解すれば、高額な費用は必要ありません。
あたしはストレージやトラフィックの使用量に関わらず、毎月1,200円を支払っています。
特にKVMスイッチが必要はありませんが、1つのモニタとキーボードを持ったら、とても便利です。
OpenBSDを使う理由はセキュリティで、FreeBSDを使う理由はパフォーマンスです。
一緒に完璧なコンビネーションとなります。
FreeBSDとOpenBSDのイメージをダウンロードして下さい。
この記事の目的の為に、USBメモリのフラッシュとFreeBSD及びOpenBSDのインストール方法を既に知っていると仮定します。
あたしのセットアップは下記のイメージです。
ネットワーク以内のIPは:
/~technicalsuwako/static/DKp6BGXWTYu4JnBZ1biZPw.jpg
/~technicalsuwako/static/4CUzz0i5QI2FoYuKotvAAQ.jpg
/~technicalsuwako/static/JePPSZafQn25uCJxvFaKGw.jpg
/~technicalsuwako/static/5VLgmL3DSTyoItyvOILtRw.jpg
ちなみに、このネットワークのIPセグメントは下記のイメージです:
このサーバでOpenBSDを使う理由はセキュリティです。
ネットワーク外からの接続は全部このサーバに通じます。
# # $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 }
# $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 } }
# $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番号は生配信の為です。
rcctl enable httpd rcctl enable relayd rcctl start httpd acme-client -v 076.moe rcctl start relayd
FreeBSDを使う理由はZFSです。
インストールしながら、是非「ZFS」→「stripe」を選択して下さい。
まずはSSDを確認して下さい:
$ 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を作成しましょう。
$ gpart create -s gpt ada1 $ gpart add -t freebsd-zfs -l disk1 ada1
zpoolを作って下さい。
$ 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ユーザーとグループを創作して下さい。
$ pw groupadd peertube $ pw useradd peertube -g peertube -s /usr/sbin/nologin -d /nonexistent -c "PeerTube User"
/zroot/peertube -maproot=peertube:peertube 192.168.0.104
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"
サービスを起動して下さい。
$ service rpcbind start $ service mountd start $ service nfsd start
FreeBSDを使う理由は、PeerTubeの開発者がOpenBSDをサポートしていない為です。
いつでも通りにPeerTubeをインストールして下さい(nginxの設定が不要です)。
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"
$ 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
以上