【デジタル自主】OpenBSDでGeminiサーバーを設置方法

このコミットが含まれているのは:
守矢諏訪子 2023-06-06 00:08:53 +09:00
コミット cb80e95392
10個のファイルの変更407行の追加108行の削除

1
.gitignore vendored
ファイルの表示

@ -3,4 +3,5 @@ tor/
i2p/
draft/
public_html/
public_gemini/
sync.sh

ファイルの表示

@ -3,14 +3,129 @@
<id>gemini://technicalsuwako.moe</id>
<title>テクニカル諏訪子</title>
<updated>2023-05-30T00:00:00Z</updated>
<updated>2023-06-06T00:00:00Z</updated>
<author><name>テクニカル諏訪子</name></author>
<link href="gemini://technicalsuwako.moe" rel="alternate"></link>
<generator uri="https://github.com/piranha/gostatic">gostatic</generator>
<entry>
<id>blog/openbsd-gemini-server.gmi</id>
<author><name>凛</name></author>
<title type="html">【デジタル自主】OpenBSDでGeminiサーバーを設置方法</title>
<published>2023-06-06T00:00:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="ウエブサイト"></category>
<category term="ウエブ開発"></category>
<category term="bsd"></category>
<category term="openbsd"></category>
<category term="gemini"></category>
<category term="デジタル自主"></category>
<link href="gemini://technicalsuwako.moe/blog/openbsd-gemini-server.gmi" rel="alternate"></link>
<content type="html">
&lt;p&gt;HTTPは比較的重いため、最近ではGeminiが徐々に人気を集めています。&lt;br /&gt;
Linuxサーバーでの設置は比較的容易ですが、OpenBSDの場合はやや複雑になります。&lt;br /&gt;
そこで今回は、OpenBSDでGeminiサーバーを設置する方法について説明します。&lt;/p&gt;
&lt;h2 id=&#34;gemini&#34;&gt;Geminiとは?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;gemini://gemini.circumlunar.space/&#34;&gt;Geminiは極めてシンプルなウェブプロトコルです。&lt;/a&gt;&lt;br /&gt;
GeminiはGopherとウェブの間隙を埋める新しいインターネットプロトコルとして、&lt;br /&gt;
一方の問題を避けながら他方の制約を解決する事を目指して共同設計されました。&lt;br /&gt;
Geminiカプセルへのアクセスには、特別なブラウザが必要となります。&lt;br /&gt;
オススメのブラウザは以下の通りです(推奨順):&lt;br /&gt;
&lt;a href=&#34;https://gh.akisblack.dev/makew0rld/amfora&#34;&gt;・Amfora(Go)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://bombadillo.colorfield.space/&#34;&gt;・Bombadillo(Go)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://git.skyjake.fi/gemini/lagrange&#34;&gt;・Lagrange(CとSDL)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://thelambdalab.xyz/elpher/&#34;&gt;・Elpher(Emacs)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://gh.akisblack.dev/MasterQ32/kristall&#34;&gt;・Kristall(C++とQt)&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://git.sr.ht/~julienxx/castor&#34;&gt;・Castor(RustとGTK)&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;htmlcss&#34;&gt;HTMLやCSSは使用可能?&lt;/h2&gt;
&lt;p&gt;いいえ、使用する事は出来ません。&lt;br /&gt;
Geminiでは、Gemitextのみがサポートされています。&lt;br /&gt;
Gemitextはマークダウンのような形式で、機能性は限定的です。&lt;br /&gt;
&lt;a href=&#34;gemini://technicalsuwako.moe/&#34;&gt;あたし自身もGeminiカプセルを運用していますので、ぜひご覧下さい。&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://gitler.moe/suwako/technicalsuwako.moe/raw/branch/master/gemini/blog/c-lib-in-zig-use.gmi&#34;&gt;良いGemtextファイルの例はこちらです。&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;画像は?&lt;/h2&gt;
&lt;p&gt;画像の利用は可能ですが、ブラウザ上で表示する事は出来ません。&lt;br /&gt;
しかし、画像へのリンクを提供すれば、外部の画像表示ソフトで開く事が出来ます。&lt;/p&gt;
&lt;h2 id=&#34;gmnxd&#34;&gt;gmnxdとは?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://lab.abiscuola.org/gmnxd/doc/trunk/www/index.wiki&#34;&gt;gmnxdはOpenBSD用のGeminiサーバーソフトウェアです。&lt;/a&gt;&lt;br /&gt;
ここではその設置方法を解説します。&lt;br /&gt;
HTTPウェブサイトと同一のサーバーでホスティングする事も可能です。&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;基本的な設置&lt;/h2&gt;
&lt;p&gt;例としてのドメインは「unkotinko.jp」を用いて説明します。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;doas su -l
wget https://lab.abiscuola.org/gmnxd/tarball/v1.2.0/gmnxd-v1.2.0.tar.gz
tar zxfv gmnxd-v1.2.0.tar.gz
&lt;span style=&#34;color:#a2f&#34;&gt;cd&lt;/span&gt; gmnxd-v1.2.0/src
make
make install
mkdir -p /var/gemini/unkotinko.jp
useradd -g &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;=uid&amp;#39;&lt;/span&gt; -L daemon -s /sbin/nologin -c &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;Gmnxd user&amp;#39;&lt;/span&gt; -d /var/gemini _gmnxd
chown -R _gmnxd:_gmnxd /var/gemini
chown -R suwako:suwako /var/gemini/unkotinko.jp
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;inetd&#34;&gt;inetd&lt;/h2&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;nvim /etc/inetd.conf
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;127.0.0.1:11965 stream tcp nowait _gmnxd /usr/local/libexec/gmnxd gmnxd
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;rcctl &lt;span style=&#34;color:#a2f&#34;&gt;enable&lt;/span&gt; inetd
rcctl start inetd
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;pf&#34;&gt;pf&lt;/h2&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;nvim /etc/pf.conf
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;...
# Gemini
pass in on egress proto tcp from any to any port { 1965 }
...
anchor &amp;#34;relayd/*&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;pfctl -f /etc/pf.conf
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;relayd&#34;&gt;relayd&lt;/h2&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;nvim /etc/relayd.conf
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;...
protocol gemini {
tcp { sack, backlog 128 }
tls keypair &amp;#34;unkotinko.jp&amp;#34;
}
...
relay gemini {
listen on 0.0.0.0 port 1965 tls
protocol gemini
forward to &amp;lt;home&amp;gt; check tcp port 11965
}
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;rcctl restart relayd
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;heading-2&#34;&gt;カプセルの内容&lt;/h2&gt;
&lt;p&gt;新たなカプセルを追加するには、「/var/gemini」内にドメイン名のフォルダを作成して下さい。&lt;br /&gt;
例えば、「dekkailolioppai.com」向けのカプセルを作成する場合、&lt;br /&gt;
&lt;code lang=&#34;&#34;&gt;mkdir /var/gemini/dekkailolioppai.com &amp;amp;&amp;amp; touch /var/gemini/dekkailolioppai.com/index.gmi&lt;/code&gt;を実行して下さい。&lt;/p&gt;
&lt;p&gt;そのindex.gmiファイルの中に、サンプルページを作成しましょう。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;# でっかいロリおっぱい
Hな日本人である。
こんちゃっす!!
&amp;gt; こんにちは!!
&amp;gt; あれあれあれ!?元気でないぞ!?
&amp;gt; もう一回、みんな!カンボジア!!
=&amp;gt; https://youtube.owacon.moe/watch?v=NXnI1Jj0h_8 元ネタ
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Geminiブラウザで「gemini://dekkailolioppai.com」にアクセスすると、上記の内容が表示されます。&lt;/p&gt;
&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
<entry>
<id>blog/libreredirect-262.gmi</id>
<author><name>凛</name></author>
@ -320,105 +435,5 @@ nvim main.zig
</content>
</entry>
<entry>
<id>blog/urloli-210.gmi</id>
<author><name>凛</name></author>
<title type="html">【】URLロリ 2.1.0登場</title>
<published>2023-05-13T00:00:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="ウエブ開発"></category>
<category term=""></category>
<category term="urloli"></category>
<category term="urlロリ"></category>
<link href="gemini://technicalsuwako.moe/blog/urloli-210.gmi" rel="alternate"></link>
<content type="html">
&lt;p&gt;URLロリ は2.1.0にバージョンアップしました!!&lt;/p&gt;
&lt;h2 id=&#34;url&#34;&gt;URLロリって何?&lt;/h2&gt;
&lt;p&gt;URLロリはクッソ小さいURL短縮作成ソフトだわ〜♡&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;変更&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ローカライズは関数化&lt;/li&gt;
&lt;li&gt;API機能性&lt;/li&gt;
&lt;li&gt;サーバーのソースコードを短くに&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;api&#34;&gt;APIについて&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://urlo.li/api&#34;&gt;/api&lt;/a&gt;&lt;br /&gt;
インスタンスURL及びバージョンを確認(GET)&lt;/p&gt;
&lt;h3 id=&#34;heading-1&#34;&gt;例の結果&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;{
&amp;#34;url&amp;#34;: &amp;#34;https://urlo.li&amp;#34;,
&amp;#34;version&amp;#34;: &amp;#34;2.1.0&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href=&#34;https://urlo.li/api/lolify&#34;&gt;/api/lolify&lt;/a&gt;&lt;br /&gt;
URLを短縮する(既に存在する場合、短縮済みURLを表示) (POST)&lt;/p&gt;
&lt;h3 id=&#34;heading-2&#34;&gt;必須のパラメートル&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;url&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;heading-3&#34;&gt;例の結果&lt;/h3&gt;
&lt;p&gt;既に存在する場合&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;curl -d url=gemini://technicalsuwako.moe https://urlo.li/api/lolify
{
&amp;#34;code&amp;#34;: 200,
&amp;#34;error&amp;#34;: &amp;#34;&amp;#34;,
&amp;#34;url&amp;#34;: &amp;#34;https://urlo.li/yoWJx&amp;#34;,
&amp;#34;origin&amp;#34;: &amp;#34;gemini://technicalsuwako.moe&amp;#34;,
&amp;#34;isnew&amp;#34;: false
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;新しく追加された場合&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;curl -d url=gemini://technicalsuwako.moe/about https://urlo.li/api/lolify
{
&amp;#34;code&amp;#34;: 200,
&amp;#34;error&amp;#34;: &amp;#34;&amp;#34;,
&amp;#34;url&amp;#34;: &amp;#34;https://urlo.li/fiW3B&amp;#34;,
&amp;#34;origin&amp;#34;: &amp;#34;gemini://technicalsuwako.moe/about&amp;#34;,
&amp;#34;isnew&amp;#34;: true
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;エラーの場合&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;curl -d url=technicalsuwako.moe https://urlo.li/api/lolify
{
&amp;#34;code&amp;#34;: 400,
&amp;#34;error&amp;#34;: &amp;#34;URLは「http://」又は「https://」で始めます。&amp;#34;,
&amp;#34;url&amp;#34;: &amp;#34;&amp;#34;,
&amp;#34;origin&amp;#34;: &amp;#34;&amp;#34;,
&amp;#34;isnew&amp;#34;: false
}%
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;curl -d url=gemini://technicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moetechnicalsuwako.moe https://urlo.li/api/lolify
{
&amp;#34;code&amp;#34;: 400,
&amp;#34;error&amp;#34;: &amp;#34;URLは500文字以内です。&amp;#34;,
&amp;#34;url&amp;#34;: &amp;#34;&amp;#34;,
&amp;#34;origin&amp;#34;: &amp;#34;&amp;#34;,
&amp;#34;isnew&amp;#34;: false
}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;heading-4&#34;&gt;ソースコード&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/urloli&#34;&gt;Gitler&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-5&#34;&gt;公式インスタンス&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://urlo.li/&#34;&gt;https://urlo.li/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-6&#34;&gt;ダウンロード&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://gitler.moe/suwako/urloli/releases&#34;&gt;リリースページ&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;heading-7&#34;&gt;会話&lt;/h2&gt;
&lt;h3 id=&#34;xmpp&#34;&gt;XMPP&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;xmpp:urloli@chat.xmpp.076.ne.jp?join&#34;&gt;xmpp:urloli@chat.xmpp.076.ne.jp?join&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;irc&#34;&gt;IRC&lt;/h3&gt;
&lt;p&gt;irc.076.ne.jp/6697&lt;br /&gt;
#urloli&lt;/p&gt;
&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
</feed>

ファイルの表示

@ -2,6 +2,7 @@
# 記事一覧
=> /blog/openbsd-gemini-server.gmi 2023年06月06日 【デジタル自主】OpenBSDでGeminiサーバーの設置方法
=> /blog/libreredirect-262.gmi 2023年05月13日 【】Libre Redirect 2.6.2登場
=> /blog/diff-zig-rust.gmi 2023年05月24日 【プログラミング】RustとZigの違い
=> /blog/spliti-110.gmi 2023年05月24日 【オワコンテック】spliti 1.1.0登場

140
gemini/blog/openbsd-gemini-server.gmi ノーマルファイル
ファイルの表示

@ -0,0 +1,140 @@
=> /blog.gmi ブログ一覧へ
#【デジタル自主】OpenBSDでGeminiサーバーを設置方法
公開日2023-06-06
HTTPは比較的重いため、最近ではGeminiが徐々に人気を集めています。
Linuxサーバーでの設置は比較的容易ですが、OpenBSDの場合はやや複雑になります。
そこで今回は、OpenBSDでGeminiサーバーを設置する方法について説明します。
## Geminiとは?
=> gemini://gemini.circumlunar.space/ Geminiは極めてシンプルなウェブプロトコルです。
GeminiはGopherとウェブの間隙を埋める新しいインターネットプロトコルとして、
一方の問題を避けながら他方の制約を解決する事を目指して共同設計されました。
Geminiカプセルへのアクセスには、特別なブラウザが必要となります。
オススメのブラウザは以下の通りです(推奨順):
=> https://gh.akisblack.dev/makew0rld/amfora ・Amfora(Go)
=> https://bombadillo.colorfield.space/ ・Bombadillo(Go)
=> https://git.skyjake.fi/gemini/lagrange ・Lagrange(CとSDL)
=> https://thelambdalab.xyz/elpher/ ・Elpher(Emacs)
=> https://gh.akisblack.dev/MasterQ32/kristall ・Kristall(C++とQt)
=> https://git.sr.ht/~julienxx/castor ・Castor(RustとGTK)
## HTMLやCSSは使用可能?
いいえ、使用する事は出来ません。
Geminiでは、Gemitextのみがサポートされています。
Gemitextはマークダウンのような形式で、機能性は限定的です。
=> gemini://technicalsuwako.moe/ あたし自身もGeminiカプセルを運用していますので、ぜひご覧下さい。
=> https://gitler.moe/suwako/technicalsuwako.moe/raw/branch/master/gemini/blog/c-lib-in-zig-use.gmi 良いGemtextファイルの例はこちらです。
## 画像は?
画像の利用は可能ですが、ブラウザ上で表示する事は出来ません。
しかし、画像へのリンクを提供すれば、外部の画像表示ソフトで開く事が出来ます。
## gmnxdとは?
=> https://lab.abiscuola.org/gmnxd/doc/trunk/www/index.wiki gmnxdはOpenBSD用のGeminiサーバーソフトウェアです。
ここではその設置方法を解説します。
HTTPウェブサイトと同一のサーバーでホスティングする事も可能です。
## 基本的な設置
例としてのドメインは「unkotinko.jp」を用いて説明します。
```sh
doas su -l
wget https://lab.abiscuola.org/gmnxd/tarball/v1.2.0/gmnxd-v1.2.0.tar.gz
tar zxfv gmnxd-v1.2.0.tar.gz
cd gmnxd-v1.2.0/src
make
make install
mkdir -p /var/gemini/unkotinko.jp
useradd -g '=uid' -L daemon -s /sbin/nologin -c 'Gmnxd user' -d /var/gemini _gmnxd
chown -R _gmnxd:_gmnxd /var/gemini
chown -R suwako:suwako /var/gemini/unkotinko.jp
```
## inetd
```sh
nvim /etc/inetd.conf
```
```
127.0.0.1:11965 stream tcp nowait _gmnxd /usr/local/libexec/gmnxd gmnxd
```
```sh
rcctl enable inetd
rcctl start inetd
```
## pf
```sh
nvim /etc/pf.conf
```
```
...
# Gemini
pass in on egress proto tcp from any to any port { 1965 }
...
anchor "relayd/*"
```
```sh
pfctl -f /etc/pf.conf
```
## relayd
```sh
nvim /etc/relayd.conf
```
```
...
protocol gemini {
tcp { sack, backlog 128 }
tls keypair "unkotinko.jp"
}
...
relay gemini {
listen on 0.0.0.0 port 1965 tls
protocol gemini
forward to <home> check tcp port 11965
}
```
```sh
rcctl restart relayd
```
## カプセルの内容
新たなカプセルを追加するには、「/var/gemini」内にドメイン名のフォルダを作成して下さい。
例えば、「dekkailolioppai.com」向けのカプセルを作成する場合、
`mkdir /var/gemini/dekkailolioppai.com && touch /var/gemini/dekkailolioppai.com/index.gmi`を実行して下さい。
そのindex.gmiファイルの中に、サンプルページを作成しましょう。
```
# でっかいロリおっぱい
Hな日本人である。
こんちゃっす!!
> こんにちは!!
> あれあれあれ!?元気でないぞ!?
> もう一回、みんな!カンボジア!!
=> https://youtube.owacon.moe/watch?v=NXnI1Jj0h_8 元ネタ
```
Geminiブラウザで「gemini://dekkailolioppai.com」にアクセスすると、上記の内容が表示されます。
以上

ファイルの表示

@ -11,8 +11,8 @@
=> /webring.gmi リング
## SNSメニュー
=> https://technicalsuwako.moe/blog.atom Atomで登録
=> https://technicalsuwako.moe/twtxt.txt twtxtでフォロー
=> /blog.atom Atomで登録
=> /twtxt.txt twtxtでフォロー
=> https://social.076.moe/suwako GNU Socialでフォロー
=> https://video.076.moe/a/suwako PeerTubeで登録
@ -26,6 +26,7 @@
## ミラー(Gemini)
=> gemini://technicalsuwako.moe/ 一般ネット 1
=> gemini://tilde.club/~technicalsuwako/ 一般ネット 2
## 支援♡
=> /monero.gmi Monero

ファイルの表示

@ -1,8 +1,9 @@
# nick = techsuwako
# url = gemini://technicalsuwako.moe/twtxt.txt
# avatar = https://076.moe/static/suwako.png
# avatar = gemini://076.moe/static/suwako.jpg
# description = テクニカル諏訪子様のtwtxtフィード
# link = ホームページ gemini://technicalsuwako.moe
2023-06-06T00:00:00Z09:00 【デジタル自主】OpenBSDでGeminiサーバーを設置方法 - gemini://technicalsuwako.moe/blog/blog/openbsd-gemini-server.gmi
2023-05-30T00:00:00Z09:00 【】Libre Redirect 2.6.2登場 - gemini://technicalsuwako.moe/blog/blog/libreredirect-262.gmi
2023-05-24T21:00:00Z09:00 【プログラミング】RustとZigの違い - gemini://technicalsuwako.moe/blog/blog/diff-zig-rust.gmi
2023-05-24T00:00:00Z09:00 【オワコンテック】spliti 1.1.0登場 - gemini://technicalsuwako.moe/blog/blog/spliti-110.gmi

ファイルの表示

@ -67,7 +67,8 @@
</div>
<div class="header-links">
ミラー(Gemini)
<a href="gemini://technicalsuwako.moe/"><img class="icon" src="/static/clearnet.png" alt="" />一般ネット</a>
<a href="gemini://technicalsuwako.moe/"><img class="icon" src="/static/clearnet.png" alt="" />一般ネット</a> |
<a href="gemini://tilde.club/~technicalsuwako/"><img class="icon" src="/static/tilde.png" alt="" />Tilde</a>
</div>
<div>
支援♡ : <a href="/support/monero/"><img class="icon" src="/static/monero.png" alt="" />Monero</a>

ファイルの表示

@ -7,7 +7,6 @@
{{ end }}
<author><name>{{ .Site.Other.Author }}</name></author>
<link href="{{ .Site.Other.Url }}" rel="alternate"></link>
<generator uri="https://github.com/piranha/gostatic">gostatic</generator>
{{ with .Site.Pages.Children "blog/" }}
{{ range .Slice 0 5 }}

140
src/blog/openbsd-gemini-server/index.md ノーマルファイル
ファイルの表示

@ -0,0 +1,140 @@
title: 【デジタル自主】OpenBSDでGeminiサーバーを設置方法
author: 凛
date: 2023-06-06
tags: jp,blog,ウエブサイト,ウエブ開発,bsd,openbsd,gemini,デジタル自主
----
HTTPは比較的重いため、最近ではGeminiが徐々に人気を集めています。\
Linuxサーバーでの設置は比較的容易ですが、OpenBSDの場合はやや複雑になります。\
そこで今回は、OpenBSDでGeminiサーバーを設置する方法について説明します。
## Geminiとは?
[Geminiは極めてシンプルなウェブプロトコルです。](gemini://gemini.circumlunar.space/)\
GeminiはGopherとウェブの間隙を埋める新しいインターネットプロトコルとして、\
一方の問題を避けながら他方の制約を解決する事を目指して共同設計されました。\
Geminiカプセルへのアクセスには、特別なブラウザが必要となります。\
オススメのブラウザは以下の通りです(推奨順):\
[・Amfora(Go)](https://gh.akisblack.dev/makew0rld/amfora)\
[・Bombadillo(Go)](https://bombadillo.colorfield.space/)\
[・Lagrange(CとSDL)](https://git.skyjake.fi/gemini/lagrange)\
[・Elpher(Emacs)](https://thelambdalab.xyz/elpher/)\
[・Kristall(C++とQt)](https://gh.akisblack.dev/MasterQ32/kristall)\
[・Castor(RustとGTK)](https://git.sr.ht/~julienxx/castor)
## HTMLやCSSは使用可能?
いいえ、使用する事は出来ません。\
Geminiでは、Gemitextのみがサポートされています。\
Gemitextはマークダウンのような形式で、機能性は限定的です。\
[あたし自身もGeminiカプセルを運用していますので、ぜひご覧下さい。](gemini://technicalsuwako.moe/)\
[良いGemtextファイルの例はこちらです。](https://gitler.moe/suwako/technicalsuwako.moe/raw/branch/master/gemini/blog/c-lib-in-zig-use.gmi)
## 画像は?
画像の利用は可能ですが、ブラウザ上で表示する事は出来ません。\
しかし、画像へのリンクを提供すれば、外部の画像表示ソフトで開く事が出来ます。
## gmnxdとは?
[gmnxdはOpenBSD用のGeminiサーバーソフトウェアです。](https://lab.abiscuola.org/gmnxd/doc/trunk/www/index.wiki)\
ここではその設置方法を解説します。\
HTTPウェブサイトと同一のサーバーでホスティングする事も可能です。
## 基本的な設置
例としてのドメインは「unkotinko.jp」を用いて説明します。
```sh
doas su -l
wget https://lab.abiscuola.org/gmnxd/tarball/v1.2.0/gmnxd-v1.2.0.tar.gz
tar zxfv gmnxd-v1.2.0.tar.gz
cd gmnxd-v1.2.0/src
make
make install
mkdir -p /var/gemini/unkotinko.jp
useradd -g '=uid' -L daemon -s /sbin/nologin -c 'Gmnxd user' -d /var/gemini _gmnxd
chown -R _gmnxd:_gmnxd /var/gemini
chown -R suwako:suwako /var/gemini/unkotinko.jp
```
## inetd
```sh
nvim /etc/inetd.conf
```
```
127.0.0.1:11965 stream tcp nowait _gmnxd /usr/local/libexec/gmnxd gmnxd
```
```sh
rcctl enable inetd
rcctl start inetd
```
## pf
```sh
nvim /etc/pf.conf
```
```
...
# Gemini
pass in on egress proto tcp from any to any port { 1965 }
...
anchor "relayd/*"
```
```sh
pfctl -f /etc/pf.conf
```
## relayd
```sh
nvim /etc/relayd.conf
```
```
...
protocol gemini {
tcp { sack, backlog 128 }
tls keypair "unkotinko.jp"
}
...
relay gemini {
listen on 0.0.0.0 port 1965 tls
protocol gemini
forward to <home> check tcp port 11965
}
```
```sh
rcctl restart relayd
```
## カプセルの内容
新たなカプセルを追加するには、「/var/gemini」内にドメイン名のフォルダを作成して下さい。\
例えば、「dekkailolioppai.com」向けのカプセルを作成する場合、\
`mkdir /var/gemini/dekkailolioppai.com && touch /var/gemini/dekkailolioppai.com/index.gmi`を実行して下さい。
そのindex.gmiファイルの中に、サンプルページを作成しましょう。
```
# でっかいロリおっぱい
Hな日本人である。
こんちゃっす!!
> こんにちは!!
> あれあれあれ!?元気でないぞ!?
> もう一回、みんな!カンボジア!!
=> https://youtube.owacon.moe/watch?v=NXnI1Jj0h_8 元ネタ
```
Geminiブラウザで「gemini://dekkailolioppai.com」にアクセスすると、上記の内容が表示されます。
以上

ファイルの表示

@ -1,6 +1,6 @@
# nick = techsuwako
# url = {{ .Site.Other.Url }}/twtxt.txt
# avatar = https://076.moe/static/suwako.png
# avatar = https://076.moe/static/suwako.jpg
# description = テクニカル諏訪子様のtwtxtフィード
# link = ホームページ {{ .Site.Other.Url }}{{ with .Site.Pages.Children "blog/" }}{{ range .Slice 0 500 }}
{{ .Date.Format "2006-01-02T15:04:05Z09:00" }} {{ html .Title }} - {{ .Site.Other.Url }}/{{ .Url }}{{ end }}{{ end }}