642 行
31 KiB
XML
642 行
31 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0">
|
||
<id>gemini://technicalsuwako.moe</id>
|
||
<title>テクニカル諏訪子</title>
|
||
|
||
<updated>2023-07-03T00:00:00Z</updated>
|
||
|
||
<author><name>テクニカル諏訪子</name></author>
|
||
<link href="gemini://technicalsuwako.moe" rel="alternate"></link>
|
||
|
||
|
||
|
||
<entry>
|
||
<id>blog/digital-autonomy-with-wireguard-home-host.gmi</id>
|
||
<author><name>凛</name></author>
|
||
<title type="html">【デジタル自主】自宅サーバーからWireGuardを使ったホスティング方法</title>
|
||
<published>2023-07-03T00:00:00Z</published>
|
||
|
||
<category term="ja"></category>
|
||
|
||
<category term="blog"></category>
|
||
|
||
<category term="デジタル自主"></category>
|
||
|
||
<category term="wireguard"></category>
|
||
|
||
<category term="linux"></category>
|
||
|
||
<category term="bsd"></category>
|
||
|
||
<category term="devuan"></category>
|
||
|
||
<category term="openbsd"></category>
|
||
|
||
<category term="freebsd"></category>
|
||
|
||
<link href="gemini://technicalsuwako.moe/blog/digital-autonomy-with-wireguard-home-host.gmi" rel="alternate"></link>
|
||
<content type="html">
|
||
|
||
|
||
|
||
<p>WireGuardは非常に便利ですね。<br />
|
||
自宅からウェブサイトをホスティングしたり、どこからでも自宅のサーバーやパソコンにアクセスしたりといった事が可能です。<br />
|
||
今回はウェブホスティングの方法についてお伝えします。</p>
|
||
<h2 id="heading">材料</h2>
|
||
<p>食べ物じゃないけど(ジョーダンダヨー)、必要な物は下記で御座います。</p>
|
||
<ul>
|
||
<li>好みのVPSホスティング会社から最も安いVPS(日本のOpenBSDサーバーはオススメ、ConoHaまたはVultrは良い)</li>
|
||
<li>自宅にあるサーバー(1台でも複数台でも可)</li>
|
||
<li>高速光回線インターネット接続</li>
|
||
</ul>
|
||
<p>静的IPは不要です。<br />
|
||
動的IPでも問題がありません。</p>
|
||
<p>OS等は何でも良いですが、この記事ではVPSはConoHaのOpenBSDで、自宅サーバーは2台のThinkCentreとOpenBSD、及びNECとFreeBSDを使用しています。<br />
|
||
また、どこへでも持ち運べるThinkPad(Artix)というノートパソコンも用いています。<br />
|
||
FreeBSDでPeerTubeをインストールし、URLロリはOpenBSDで行い、さまざまな静的なホームページはOpenBSDで実行しています。<br />
|
||
インターネット接続サービスは何でも良いですが、高速光回線インターネット接続が推奨されます。</p>
|
||
<h2 id="wireguard">WireGuardのインストール</h2>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>OpenBSD</th>
|
||
<th>FreeBSD</th>
|
||
<th>Artix (runitの場合)</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>doas pkg_add wireguard-tools</td>
|
||
<td>sudo pkg install wireguard-tools</td>
|
||
<td>sudo pacman -S wireguard-tools wireguard-runit</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>Artixの場合、インストール後に再起動が必要な場合があります。<br />
|
||
インストールしたlinux-kernelのバージョンが現在実行中のバージョンと異なると、WireGuardが起動出来なくなります。</p>
|
||
<h2 id="wireguard-1">WireGuardの設定</h2>
|
||
<h3 id="vps">VPS側</h3>
|
||
<pre><code lang="">doas su
|
||
mkdir /etc/wireguard
|
||
chmod <span style="color:#666">600</span> /etc/wireguard
|
||
<span style="color:#a2f">cd</span> /etc/wireguard
|
||
wg genkey | tee private.key | wg pubkey &gt; public.key
|
||
|
||
nvim wg0.conf
|
||
</code></pre><pre><code lang="">[Interface]
|
||
Address = 192.168.10.1/24
|
||
PrivateKey = (VPSのprivate.keyの内容)
|
||
ListenPort = 51820
|
||
|
||
[Peer]
|
||
PublicKey = (ThinkPadのpublic.keyの内容)
|
||
PreSharedKey = (ThinkPadのpreshared.keyの内容)
|
||
AllowedIPs = 192.168.10.100/32
|
||
PersistentKeepalive = 25
|
||
|
||
[Peer]
|
||
PublicKey = (ThinkCentreのpublic.keyの内容)
|
||
PreSharedKey = (ThinkCentreのpreshared.keyの内容)
|
||
AllowedIPs = 192.168.10.101/32
|
||
PersistentKeepalive = 25
|
||
|
||
[Peer]
|
||
PublicKey = (NECのpublic.keyの内容)
|
||
PreSharedKey = (NECのpreshared.keyの内容)
|
||
AllowedIPs = 192.168.10.102/32
|
||
PersistentKeepalive = 25
|
||
</code></pre><pre><code lang="">nvim /etc/pf.conf
|
||
</code></pre><pre><code lang="">set skip on lo
|
||
exsrv1 = (VPSのIPアドレス)
|
||
insrv1 = 192.168.10.101
|
||
insrv2 = 192.168.10.102
|
||
insrv3 = 192.168.10.103
|
||
|
||
block return
|
||
pass
|
||
|
||
pass in on wg0
|
||
pass in inet proto udp from any to any port 51820
|
||
|
||
# PeerTube
|
||
pass in inet proto udp from any to $insrv2 port 9000
|
||
pass in on egress proto tcp from any to $insrv2 port {1935, 1936} rdr-to $insrv2
|
||
|
||
# URLロリ
|
||
pass in inet proto udp from any to $insrv1 port 9910
|
||
|
||
# Gemini
|
||
pass in on egress proto tcp from any to $insrv3 port { 1965 } rdr-to $insrv3
|
||
|
||
# HTML
|
||
pass out on egress inet from (wg0:network) nat-to (vio0:0)
|
||
|
||
# SSHはWireGuardネットワーク内のみ許可する
|
||
pass in on wg0 proto tcp from 192.168.10.0/24 to any port 22
|
||
block in on egress proto tcp from any to any port 22
|
||
...
|
||
</code></pre><pre><code lang="">pfctl -f /etc/pf.conf
|
||
</code></pre><p>最高レベルのセキュリティを保つ為に:</p>
|
||
<pre><code lang="">nvim /etc/ssh/sshd_config
|
||
</code></pre><pre><code lang="">...
|
||
AllowUsers (貴方のユーザー名)@192.168.10.0/24
|
||
PermitRootLogin no
|
||
AuthorizedKeysFile .ssh/authorized_keys
|
||
PasswordAuthentication no
|
||
...
|
||
</code></pre><pre><code lang=""><span style="color:#a2f">exit</span>
|
||
ssh-keygen -t ed25519
|
||
<span style="color:#666">(</span>最後までそのままEnterキーを押して<span style="color:#666">)</span>
|
||
cat ~/.ssh/id_ed25519.pub
|
||
</code></pre><p>出力内容をコピーし、各サーバーとノートパソコンの「~/.ssh/authorized_keys」ファイルに貼り付けて下さい。<br />
|
||
次に、上記のステップを各サーバー及びノートパソコンで実行し、その結果をVPSの「/.ssh/authorized_keys」ファイルに貼り付けて下さい。</p>
|
||
<pre><code lang="">doas rcctl restart sshd
|
||
wg-quick up wg0
|
||
</code></pre><h3 id="heading-1">自宅サーバーとノートパソコンの設定</h3>
|
||
<p>各デバイスの設定は基本的に同じです。</p>
|
||
<pre><code lang="">doas su
|
||
mkdir /etc/wireguard
|
||
chmod <span style="color:#666">600</span> /etc/wireguard
|
||
<span style="color:#a2f">cd</span> /etc/wireguard
|
||
wg genkey | tee private.key | wg pubkey &gt; public.key
|
||
wg genpsk &gt; preshared.key
|
||
|
||
nvim wg0.conf
|
||
</code></pre><pre><code lang="">[Interface]
|
||
PrivateKey = (現在のデバイスのprivate.keyの内容)
|
||
Address = 192.168.10.10x/24
|
||
|
||
[Peer]
|
||
PublicKey = (VPSのpublic.keyの内容)
|
||
PreSharedKey = (現在のデバイスのpreshared.keyの内容)
|
||
Endpoint = (VPSの公開IPアドレス):51820
|
||
AllowedIPs = 192.168.10.0/24
|
||
PersistentKeepalive = 25
|
||
</code></pre><p>Address部分の「x」は、各サーバーで設定した通りです。<br />
|
||
この記事では、Artix=0、OpenBSD=1、FreeBSD=2となります。</p>
|
||
<h4 id="openbsd">OpenBSDサーバー</h4>
|
||
<pre><code lang=""><span style="color:#a2f">cd</span>
|
||
wget https://lab.abiscuola.org/gmnxd/tarball/v1.2.0/gmnxd-v1.2.0.tar.gz
|
||
tar zxfv gmnxd-v1.2.0.tar.gz
|
||
<span style="color:#a2f">cd</span> gmnxd-v1.2.0/src
|
||
make
|
||
make install
|
||
<span style="color:#a2f">cd</span>
|
||
useradd -g <span style="color:#b44">&#39;=uid&#39;</span> -L daemon -s /sbin/nologin -c <span style="color:#b44">&#39;Gmnxd user&#39;</span> -d /var/gemini _gmnxd
|
||
chown -R _gmnxd:_gmnxd /var/gemini
|
||
nvim /etc/inetd.conf
|
||
</code></pre><pre><code lang="">0.0.0.0:11965 stream tcp nowait _gmnxd /usr/local/libexec/gmnxd gmnxd
|
||
</code></pre><pre><code lang="">rcctl <span style="color:#a2f">enable</span> inetd
|
||
rcctl start inetd
|
||
nvim /etc/pf.conf
|
||
</code></pre><pre><code lang="">set skip on lo
|
||
|
||
block return
|
||
pass
|
||
|
||
# HTTP
|
||
pass in inet proto tcp from any to (self) port {80, 443}
|
||
|
||
# URLロリ
|
||
pass in inet proto tcp from any to (self) port 9910
|
||
|
||
# Gemini
|
||
pass in inet proto tcp from any to (self) port 11965
|
||
...
|
||
anchor &#34;relayd/*&#34;
|
||
</code></pre><pre><code lang="">pfctl -f /etc/pf.conf
|
||
wg-quick up wg0
|
||
mkdir -p /var/www/htdocs/<span style="color:#666">{</span>076,minmi<span style="color:#666">}</span>.moe/www
|
||
mkdir -p /var/gemini/076.moe
|
||
<span style="color:#a2f">echo</span> <span style="color:#b44">&#34;わーい&#34;</span> &gt;&gt; /var/www/htdocs/<span style="color:#666">{</span>076,minmi<span style="color:#666">}</span>.moe/www/index.html
|
||
<span style="color:#a2f">echo</span> <span style="color:#b44">&#34;わーい&#34;</span> &gt;&gt; /var/gemini/076.moe/index.gmi
|
||
nvim /etc/httpd.conf
|
||
</code></pre><pre><code lang="">eth_addr=192.168.0.103 # 自宅のルーターで設定した固定IPアドレス
|
||
wg0_addr=192.168.10.103 # WireGuardで設定したIPアドレス
|
||
|
||
## 076.moe
|
||
server &#34;076.moe&#34; {
|
||
listen on $wg0_addr port 8080
|
||
root &#34;/htdocs/076.moe/www&#34;
|
||
directory index &#34;index.html&#34;
|
||
location &#34;/repo/*&#34; {
|
||
directory auto index
|
||
}
|
||
location &#34;/.well-known/acme-challenge/*&#34; {
|
||
root &#34;/acme&#34;
|
||
request strip 2
|
||
}
|
||
}
|
||
|
||
server &#34;l3nbzyxgrkmd46nacmzf2sy6tpjrwh4iv3pgacbrbk72wcgxq5a.b32.i2p&#34; {
|
||
listen on $eth_addr port 8450
|
||
root &#34;/htdocs/076.moe/www&#34;
|
||
directory index &#34;index.html&#34;
|
||
location &#34;/repo/*&#34; {
|
||
directory auto index
|
||
}
|
||
}
|
||
|
||
server &#34;7dt6irsmfvbrtgn4nuah56kky6mvr472fbwwaltuxpf26qdqkdhfvnqd.onion&#34; {
|
||
listen on $eth_addr port 8500
|
||
root &#34;/htdocs/076.moe/www&#34;
|
||
directory index &#34;index.html&#34;
|
||
location &#34;/repo/*&#34; {
|
||
directory auto index
|
||
}
|
||
}
|
||
|
||
## minmi.moe
|
||
server &#34;minmi.moe&#34; {
|
||
listen on $wg0_addr port 8087
|
||
root &#34;/htdocs/minmi.moe/www&#34;
|
||
directory index &#34;index.html&#34;
|
||
location &#34;/.well-known/acme-challenge/*&#34; {
|
||
root &#34;/acme&#34;
|
||
request strip 2
|
||
}
|
||
}
|
||
</code></pre><pre><code lang="">mkdir -p /var/www/htdocs/urlo.li
|
||
<span style="color:#a2f">cd</span> /var/www/htdocs/urlo.li
|
||
git clone https://gitler.moe/suwako/urloli.git .
|
||
nvim Makefile
|
||
</code></pre><p>一部編集は必要となります。</p>
|
||
<pre><code lang=""># Linux、Cruxの場合は必須。他のディストリビューションはどうでも良い
|
||
#PREFIX=/usr
|
||
# FreeBSDとOpenBSD
|
||
PREFIX=/usr/local
|
||
</code></pre><pre><code lang="">rcctl <span style="color:#a2f">enable</span> httpd
|
||
rcctl start httpd
|
||
make
|
||
make install
|
||
nvim /etc/urloli/config.json
|
||
</code></pre><pre><code lang="">{
|
||
&#34;domain&#34;: &#34;https://(ドメイン名)&#34;,
|
||
&#34;webpath&#34;: &#34;/var/www/htdocs/urlo.li&#34;
|
||
}
|
||
</code></pre><h4 id="freebsd">FreeBSDサーバー</h4>
|
||
<p>公式ガイドに従って、nginxとcertbotをインストールが必要とされていますが、今回の場合は不要です。</p>
|
||
<pre><code lang="">wg-quick up wg0
|
||
pkg install -y sudo bash wget git python pkgconf postgresql13-server postgresql13-contrib redis openssl node npm yarn ffmpeg unzip
|
||
visudo
|
||
</code></pre><pre><code lang="">%wheel ALL=(ALL) ALL
|
||
</code></pre><pre><code lang="">sysrc <span style="color:#b8860b">postgresql_enable</span><span style="color:#666">=</span><span style="color:#b44">&#34;YES&#34;</span>
|
||
sysrc <span style="color:#b8860b">redis_enable</span><span style="color:#666">=</span><span style="color:#b44">&#34;YES&#34;</span>
|
||
sysrc <span style="color:#b8860b">nginx_enable</span><span style="color:#666">=</span><span style="color:#b44">&#34;YES&#34;</span>
|
||
|
||
sudo pw useradd -n peertube -d /var/www/peertube -s /usr/local/bin/bash -m
|
||
sudo passwd peertube
|
||
<span style="color:#a2f">cd</span> /var/www/peertube
|
||
sudo -u postgres createuser -P peertube
|
||
sudo -u postgres createdb -O peertube -E UTF8 -T template0 peertube_prod
|
||
sudo -u postgres psql -c <span style="color:#b44">&#34;CREATE EXTENSION pg_trgm;&#34;</span> peertube_prod
|
||
sudo -u postgres psql -c <span style="color:#b44">&#34;CREATE EXTENSION unaccent;&#34;</span> peertube_prod
|
||
<span style="color:#b8860b">VERSION</span><span style="color:#666">=</span><span style="color:#a2f;font-weight:bold">$(</span>curl -s https://api.github.com/repos/chocobozzz/peertube/releases/latest | grep tag_name | cut -d <span style="color:#b44">&#39;&#34;&#39;</span> -f 4<span style="color:#a2f;font-weight:bold">)</span> <span style="color:#666">&amp;&amp;</span> <span style="color:#a2f">echo</span> <span style="color:#b44">&#34;Latest Peertube version is </span><span style="color:#b8860b">$VERSION</span><span style="color:#b44">&#34;</span>
|
||
<span style="color:#a2f">cd</span> /var/www/peertube
|
||
sudo -u peertube mkdir config storage versions
|
||
sudo -u peertube chmod <span style="color:#666">750</span> config/
|
||
<span style="color:#a2f">cd</span> /var/www/peertube/versions
|
||
sudo -u peertube wget -q <span style="color:#b44">&#34;https://github.com/Chocobozzz/PeerTube/releases/download/</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">VERSION</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">/peertube-</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">VERSION</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">.zip&#34;</span>
|
||
sudo -u peertube unzip -q peertube-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">VERSION</span><span style="color:#b68;font-weight:bold">}</span>.zip <span style="color:#666">&amp;&amp;</span> sudo -u peertube rm peertube-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">VERSION</span><span style="color:#b68;font-weight:bold">}</span>.zip
|
||
<span style="color:#a2f">cd</span> /var/www/peertube
|
||
sudo -u peertube ln -s versions/peertube-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">VERSION</span><span style="color:#b68;font-weight:bold">}</span> ./peertube-latest
|
||
<span style="color:#a2f">cd</span> ./peertube-latest <span style="color:#666">&amp;&amp;</span> sudo -H -u peertube yarn install --production --pure-lockfile
|
||
<span style="color:#a2f">cd</span> /var/www/peertube
|
||
sudo -u peertube cp peertube-latest/config/default.yaml config/default.yaml
|
||
<span style="color:#a2f">cd</span> /var/www/peertube
|
||
sudo -u peertube cp peertube-latest/config/production.yaml.example config/production.yaml
|
||
nvim config/production.yaml
|
||
</code></pre><pre><code lang="">listen:
|
||
hostname: &#39;0.0.0.0&#39;
|
||
port: 9000
|
||
|
||
webserver:
|
||
https: true
|
||
hostname: &#39;(ドメイン名)&#39;
|
||
port: 443
|
||
...
|
||
</code></pre><pre><code lang="">sudo install -m <span style="color:#666">0555</span> /var/www/peertube/peertube-latest/support/freebsd/peertube /usr/local/etc/rc.d/
|
||
sudo sysrc <span style="color:#b8860b">peertube_enable</span><span style="color:#666">=</span><span style="color:#b44">&#34;YES&#34;</span>
|
||
sudo service peertube start
|
||
</code></pre><h4 id="artix">Artixノートパソコン</h4>
|
||
<pre><code lang="">wg-quick up wg0
|
||
</code></pre><h3 id="vps-1">再度、VPSの設定</h3>
|
||
<pre><code lang="">nvim /etc/acme-client.conf
|
||
</code></pre><pre><code lang="">authority letsencrypt {
|
||
api url &#34;https://acme-v02.api.letsencrypt.org/directory&#34;
|
||
account key &#34;/etc/acme/letsencrypt-privkey.pem&#34;
|
||
}
|
||
|
||
domain 076.moe {
|
||
alternative names { www.076.moe }
|
||
domain key &#34;/etc/ssl/private/076.moe.key&#34;
|
||
domain full chain certificate &#34;/etc/ssl/076.moe.crt&#34;
|
||
sign with letsencrypt
|
||
}
|
||
|
||
domain video.076.moe {
|
||
domain key &#34;/etc/ssl/private/video.076.moe.key&#34;
|
||
domain full chain certificate &#34;/etc/ssl/video.076.moe.crt&#34;
|
||
sign with letsencrypt
|
||
}
|
||
|
||
domain urlo.li {
|
||
domain key &#34;/etc/ssl/private/urlo.li.key&#34;
|
||
domain full chain certificate &#34;/etc/ssl/urlo.li.crt&#34;
|
||
sign with letsencrypt
|
||
}
|
||
|
||
domain minmi.moe {
|
||
domain key &#34;/etc/ssl/private/minmi.moe.key&#34;
|
||
domain full chain certificate &#34;/etc/ssl/minmi.moe.crt&#34;
|
||
sign with letsencrypt
|
||
}
|
||
</code></pre><pre><code lang="">nvim /etc/relayd.conf
|
||
</code></pre><pre><code lang="">relayd_addr=&#34;0.0.0.0&#34;
|
||
insrv1_addr=&#34;192.168.10.101&#34;
|
||
insrv2_addr=&#34;192.168.10.102&#34;
|
||
|
||
table &lt;home&gt; { $insrv1_addr }
|
||
table &lt;urloli&gt; { $insrv1_addr }
|
||
table &lt;minmi&gt; { $insrv1_addr }
|
||
|
||
table &lt;video&gt; { $insrv2_addr }
|
||
|
||
http protocol reverse {
|
||
tcp { nodelay, sack }
|
||
tls ciphers &#34;TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256&#34;
|
||
tls keypair &#34;076.moe&#34;
|
||
tls keypair &#34;video.076.moe&#34;
|
||
tls keypair &#34;urlo.li&#34;
|
||
tls keypair &#34;minmi.moe&#34;
|
||
|
||
match request header append &#34;X-Forwarded-For&#34; value &#34;$REMOTE_ADDR&#34;
|
||
match request header append &#34;X-Forwarded-Port&#34; value &#34;$REMOTE_PORT&#34;
|
||
|
||
match response header set &#34;Referrer-Policy&#34; value &#34;same-origin&#34;
|
||
match response header set &#34;X-Frame-Options&#34; value &#34;deny&#34;
|
||
match response header set &#34;X-XSS-Protection&#34; value &#34;1; mode=block&#34;
|
||
match response header set &#34;X-Content-Type-Options&#34; value &#34;nosniff&#34;
|
||
match response header set &#34;Strict-Transport-Security&#34; value &#34;max-age=31536000; includeSubDomains; preload&#34;
|
||
match response header set &#34;Cache-Control&#34; value &#34;max-age=86400&#34;
|
||
|
||
pass request quick header &#34;Host&#34; value &#34;076.moe&#34; forward to &lt;home&gt;
|
||
pass request quick header &#34;Host&#34; value &#34;www.076.moe&#34; forward to &lt;home&gt;
|
||
pass request quick header &#34;Host&#34; value &#34;video.076.moe&#34; forward to &lt;video&gt;
|
||
pass request quick header &#34;Host&#34; value &#34;urlo.li&#34; forward to &lt;urloli&gt;
|
||
pass request quick header &#34;Host&#34; value &#34;minmi.moe&#34; forward to &lt;minmi&gt;
|
||
return error
|
||
pass
|
||
}
|
||
|
||
http protocol reverse80 {
|
||
match request header append &#34;X-Forwarded-For&#34; value &#34;$REMOTE_ADDR&#34;
|
||
match request header append &#34;X-Forwarded-Port&#34; value &#34;$REMOTE_PORT&#34;
|
||
|
||
match response header set &#34;Referrer-Policy&#34; value &#34;same-origin&#34;
|
||
match response header set &#34;X-Frame-Options&#34; value &#34;deny&#34;
|
||
match response header set &#34;X-XSS-Protection&#34; value &#34;1; mode=block&#34;
|
||
match response header set &#34;X-Content-Type-Options&#34; value &#34;nosniff&#34;
|
||
match response header set &#34;Strict-Transport-Security&#34; value &#34;max-age=31536000; includeSubDomains; preload&#34;
|
||
match response header set &#34;Cache-Control&#34; value &#34;max-age=86400&#34;
|
||
|
||
pass request quick header &#34;Host&#34; value &#34;076.moe&#34; forward to &lt;home&gt;
|
||
pass request quick header &#34;Host&#34; value &#34;www.076.moe&#34; forward to &lt;home&gt;
|
||
pass request quick header &#34;Host&#34; value &#34;video.076.moe&#34; forward to &lt;video&gt;
|
||
pass request quick header &#34;Host&#34; value &#34;urlo.li&#34; forward to &lt;urloli&gt;
|
||
pass request quick header &#34;Host&#34; value &#34;minmi.moe&#34; forward to &lt;minmi&gt;
|
||
return error
|
||
pass
|
||
}
|
||
|
||
protocol gemini {
|
||
tcp { nodelay, sack }
|
||
tls ciphers &#34;TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256&#34;
|
||
tls keypair &#34;076.moe&#34;
|
||
}
|
||
|
||
relay www_tls {
|
||
listen on $relayd_addr port 443 tls
|
||
protocol reverse
|
||
|
||
forward to &lt;video&gt; port 9000 check tcp
|
||
|
||
forward to &lt;home&gt; port 8080 check tcp
|
||
forward to &lt;urloli&gt; port 9910 check tcp
|
||
forward to &lt;minmi&gt; port 8087 check tcp
|
||
}
|
||
|
||
relay www_http {
|
||
listen on $relayd_addr port 80
|
||
protocol reverse80
|
||
|
||
forward to &lt;video&gt; port 9000 check tcp
|
||
|
||
forward to &lt;home&gt; port 8080 check tcp
|
||
forward to &lt;urloli&gt; port 9910 check tcp
|
||
forward to &lt;minmi&gt; port 8087 check tcp
|
||
}
|
||
|
||
relay gemini {
|
||
listen on $relayd_addr port 1965 tls
|
||
protocol gemini
|
||
|
||
forward to &lt;home&gt; check tcp port 11965
|
||
}
|
||
</code></pre><pre><code lang="">rcctl <span style="color:#a2f">enable</span> relayd
|
||
rcctl start relayd
|
||
|
||
acme-client -v 076.moe
|
||
acme-client -v video.076.moe
|
||
acme-client -v urlo.li
|
||
acme-client -v minmi.moe
|
||
</code></pre><p><img src="https://ass.technicalsuwako.moe/kanrinya.jpg" alt="" /></p>
|
||
<p>ねぇー!簡単でしょー!</p>
|
||
<p>以上</p>
|
||
|
||
|
||
</content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<id>blog/hozonsite-100.gmi</id>
|
||
<author><name>凛</name></author>
|
||
<title type="html">【076】保存サイト 1.0.0登場</title>
|
||
<published>2023-06-23T19:20:00Z</published>
|
||
|
||
<category term="jp"></category>
|
||
|
||
<category term="blog"></category>
|
||
|
||
<category term="ウエブ開発"></category>
|
||
|
||
<category term="076"></category>
|
||
|
||
<category term="hozonsite"></category>
|
||
|
||
<category term="保存サイト"></category>
|
||
|
||
<link href="gemini://technicalsuwako.moe/blog/hozonsite-100.gmi" rel="alternate"></link>
|
||
<content type="html">
|
||
|
||
|
||
|
||
<p>保存サイト は1.0.0にバージョンアップしました!!</p>
|
||
<h2 id="heading">保存サイトって何?</h2>
|
||
<p>世界初FOSS系ウエブアーカイバーです。</p>
|
||
<h2 id="heading-1">変更</h2>
|
||
<ul>
|
||
<li>PHPからGoに交換しました</li>
|
||
<li>今度からバージョンを付きます</li>
|
||
</ul>
|
||
<h2 id="heading-2">ソースコード</h2>
|
||
<p><a href="https://gitler.moe/suwako/hozonsite">Gitler</a><br />
|
||
<a href="https://codeberg.org/TechnicalSuwako/hozonsite">Codeberg</a><br />
|
||
<a href="https://notabug.org/TechnicalSuwako/hozonsite">Notabug</a><br />
|
||
<a href="https://git.disroot.org/TechnicalSuwako/hozonsite">Disroot</a></p>
|
||
<h2 id="heading-3">公式インスタンス</h2>
|
||
<p><a href="https://hozon.site/">https://hozon.site/</a></p>
|
||
<h2 id="heading-4">ダウンロード</h2>
|
||
<p><a href="https://gitler.moe/suwako/hozonsite/releases">リリースページ</a></p>
|
||
<h2 id="heading-5">会話</h2>
|
||
<h3 id="xmpp">XMPP</h3>
|
||
<p><a href="xmpp:hozonsite@chat.xmpp.076.ne.jp?join">xmpp:hozonsite@chat.xmpp.076.ne.jp?join</a></p>
|
||
<h3 id="irc">IRC</h3>
|
||
<p>irc.076.ne.jp/6697<br />
|
||
#hozonsite</p>
|
||
<p>以上</p>
|
||
|
||
|
||
</content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<id>blog/norikae-101.gmi</id>
|
||
<author><name>凛</name></author>
|
||
<title type="html">【076】乗換 1.0.1登場</title>
|
||
<published>2023-06-23T08:15:00Z</published>
|
||
|
||
<category term="jp"></category>
|
||
|
||
<category term="blog"></category>
|
||
|
||
<category term="ソフト開発"></category>
|
||
|
||
<category term="076"></category>
|
||
|
||
<category term="乗換"></category>
|
||
|
||
<link href="gemini://technicalsuwako.moe/blog/norikae-101.gmi" rel="alternate"></link>
|
||
<content type="html">
|
||
|
||
|
||
|
||
<h2 id="heading">乗換って何?</h2>
|
||
<p>乗換はCLIでの路線情報を確認ツールです。<br />
|
||
Yahooでスパイウェアが多すぎるため、CLI用のフロントエンドを作りました。</p>
|
||
<h2 id="heading-1">変更</h2>
|
||
<ul>
|
||
<li>-vを修正</li>
|
||
<li>電車・バス・空路の表示</li>
|
||
</ul>
|
||
<h2 id="heading-2">ソースコード</h2>
|
||
<p><a href="https://gitler.moe/suwako/norikae">Gitler</a><br />
|
||
<a href="https://codeberg.org/TechnicalSuwako/norikae">Codeberg</a><br />
|
||
<a href="https://notabug.org/TechnicalSuwako/norikae">Notabug</a><br />
|
||
<a href="https://git.disroot.org/TechnicalSuwako/norikae">Disroot</a></p>
|
||
<h2 id="heading-3">ダウンロード</h2>
|
||
<p><a href="https://gitler.moe/suwako/norikae/releases">リリースページ</a><br />
|
||
<a href="https://076.moe/repo/src/norikae">ソースコード</a><br />
|
||
<a href="https://076.moe/repo/bin/norikae">バイナリー</a></p>
|
||
<p>以上</p>
|
||
|
||
|
||
</content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<id>blog/rofi-youtube-101.gmi</id>
|
||
<author><name>凛</name></author>
|
||
<title type="html">【076】rofi-youtube 1.0.1登場</title>
|
||
<published>2023-06-23T08:00:00Z</published>
|
||
|
||
<category term="jp"></category>
|
||
|
||
<category term="blog"></category>
|
||
|
||
<category term="ソフト開発"></category>
|
||
|
||
<category term="076"></category>
|
||
|
||
<category term="rofi"></category>
|
||
|
||
<category term="rofi-youtube"></category>
|
||
|
||
<link href="gemini://technicalsuwako.moe/blog/rofi-youtube-101.gmi" rel="alternate"></link>
|
||
<content type="html">
|
||
|
||
|
||
|
||
<h2 id="rofi-youtube">rofi-youtubeって何?</h2>
|
||
<p>rofi-youtubeは、rofiを用いてYouTubeの動画を検索し再生する為のソフトです。</p>
|
||
<h2 id="heading">変更</h2>
|
||
<ul>
|
||
<li>「デコードに失敗: invalid character &lsquo;&lt;&rsquo; looking for beginning of value」のエラーを修正</li>
|
||
</ul>
|
||
<h2 id="heading-1">ソースコード</h2>
|
||
<p><a href="https://gitler.moe/suwako/rofi-youtube">Gitler</a><br />
|
||
<a href="https://codeberg.org/TechnicalSuwako/rofi-youtube">Codeberg</a><br />
|
||
<a href="https://notabug.org/TechnicalSuwako/rofi-youtube">Notabug</a><br />
|
||
<a href="https://git.disroot.org/TechnicalSuwako/rofi-youtube">Disroot</a></p>
|
||
<h2 id="heading-2">ダウンロード</h2>
|
||
<p><a href="https://gitler.moe/suwako/rofi-youtube/releases">リリースページ</a><br />
|
||
<a href="https://076.moe/repo/src/rofi-youtube">ソースコード</a><br />
|
||
<a href="https://076.moe/repo/bin/rofi-youtube">バイナリー</a></p>
|
||
<p>以上</p>
|
||
|
||
|
||
</content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<id>blog/norikae-100.gmi</id>
|
||
<author><name>凛</name></author>
|
||
<title type="html">【076】乗換 1.0.0登場</title>
|
||
<published>2023-06-22T00:00:00Z</published>
|
||
|
||
<category term="jp"></category>
|
||
|
||
<category term="blog"></category>
|
||
|
||
<category term="ソフト開発"></category>
|
||
|
||
<category term="076"></category>
|
||
|
||
<category term="乗換"></category>
|
||
|
||
<link href="gemini://technicalsuwako.moe/blog/norikae-100.gmi" rel="alternate"></link>
|
||
<content type="html">
|
||
|
||
|
||
|
||
<h2 id="heading">乗換って何?</h2>
|
||
<p>乗換はCLIでの路線情報を確認ツールです。<br />
|
||
Yahooでスパイウェアが多すぎるため、CLI用のフロントエンドを作りました。</p>
|
||
<h2 id="heading-1">ソースコード</h2>
|
||
<p><a href="https://gitler.moe/suwako/norikae">Gitler</a><br />
|
||
<a href="https://codeberg.org/TechnicalSuwako/norikae">Codeberg</a><br />
|
||
<a href="https://notabug.org/TechnicalSuwako/norikae">Notabug</a><br />
|
||
<a href="https://git.disroot.org/TechnicalSuwako/norikae">Disroot</a></p>
|
||
<h2 id="heading-2">スクリーンショット</h2>
|
||
<p><img src="https://ass.technicalsuwako.moe/Screenshot_20230622_224604.png" alt="" /><br />
|
||
<img src="https://ass.technicalsuwako.moe/Screenshot_20230622_224729.png" alt="" /><br />
|
||
<img src="https://ass.technicalsuwako.moe/Screenshot_20230622_224917.png" alt="" /></p>
|
||
<p>以上</p>
|
||
|
||
|
||
</content>
|
||
</entry>
|
||
|
||
|
||
</feed>
|