<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>技術 | 央樹の葉</title>
	<atom:link href="https://www.terfes.net/category/tech/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.terfes.net</link>
	<description>ターフェス＠浅田和哉のまったり戯言ブログ</description>
	<lastBuildDate>Sat, 11 Oct 2025 22:15:25 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
<site xmlns="com-wordpress:feed-additions:1">7770719</site>	<item>
		<title>Jetpackのパブリタイズメッセージのカスタマイズのこと</title>
		<link>https://www.terfes.net/2019/05/28/post-1989/</link>
					<comments>https://www.terfes.net/2019/05/28/post-1989/#respond</comments>
		
		<dc:creator><![CDATA[ターフェス／浅田和哉]]></dc:creator>
		<pubDate>Mon, 27 May 2019 15:00:03 +0000</pubDate>
				<category><![CDATA[技術]]></category>
		<category><![CDATA[「n年前の記事です」警告表示]]></category>
		<category><![CDATA[Jetpack]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[パブリタイズメッセージ]]></category>
		<guid isPermaLink="false">https://www.terfes.net/?p=1989</guid>

					<description><![CDATA[自分用メモ。急にWordpressの下書き保存や公開・更新時に「更新できません」表示が出るようになった原因だったので、スニペット修正したお話。 目次 事の起こりスニペット改修……の前に今度こそスニペット改修おまけ 事の起 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>自分用メモ。<br>急にWordpressの下書き保存や公開・更新時に「更新できません」表示が出るようになった原因だったので、スニペット修正したお話。</p>




  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2"><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">事の起こり</a></li><li><a href="#toc2" tabindex="0">スニペット改修……の前に</a></li><li><a href="#toc3" tabindex="0">今度こそスニペット改修</a></li><li><a href="#toc4" tabindex="0">おまけ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">事の起こり</span></h2>



<p>WordPressが5.２にアップデートされたあたりから、急に先の通り「更新できません」の表示が出るようになって悩んでました。</p>



<p>ただ、一般的な「更新できません」トラブルと違って、警告メッセージだけで実際は保存も更新もできてると言うこと。<br>ただ保存中のまま、公開（更新）ボタンがグレーアウトするのでちょっと手間がかかるのが難点と言うくらいだったので無視してたんですけど、やっぱり気になるのであれこれと試したところ、CodeSnippetプラグインを止めたところ改善。<br>と言うことでスニペットで怪しいのがJetpackのパブリタイズメッセージをカスタマイズ（と言ってもTwitterしか有効にしてない上に、カテゴリーのスラッグをタグとして追加してるだけ）だったので、そこを止めて「更新できません」のトラブルは解消。<br>と言うことで、パブリタイズメッセージのカスタマイズ方法を改めて調べて見ました。</p>



<h2 class="wp-block-heading"><span id="toc2">スニペット改修……の前に</span></h2>



<p>恥を覚悟の上で改修前のスニペット（トラブルになるので使わないでください）を備忘録的に（ただこれも数年前、CodeSnippetプラグイン導入時にどこかで拾ってきたスニペットなのですが）</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">function change_publicize_save_meta( $submit_post, $post_id,　$service_name, $connection ){

    /*カテゴリの配列を取得*/
    $categories = get_the_category($post_id);
    /*先頭のカテゴリのスラッグを取得*/
    $category   = $categories[0]->slug;

    /*記事タイトルを取得*/
    $title      = get_the_title($post_id);

    /*パブリサイズ共有が有効な場合*/
    if ( !$publicize_custom_message ) {
        /*カスタムメッセージを編集*/
        $publicize_custom_message = sprintf(
        "Blog new Post:%s\n#LeafOfHeartwood #%s",$title ,$category);
        /*カスタムメッセージを適用*/
        update_post_meta( $post_id, '_wpas_mess', $publicize_custom_message );
    }
}
add_action( 'publicize_save_meta', 'change_publicize_save_meta', 10, 4 );
</pre>



<p>コメントごとコードをコピペしてたので特に説明も必要ないと思います（笑）</p>



<h2 class="wp-block-heading"><span id="toc3">今度こそスニペット改修</span></h2>



<p>と言う事で、こちらの記事を参考に（と言うかほぼコピぺ）でスニペットを新規に作成。</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-reference">





<a rel="noopener" target="_blank" href="https://blog.sus-happy.net/jetpack-publicize-custom/" title="Jetpack for WordPressのパブリサイズ共有を色々カスタマイズしてみた - SUSH-i LOG" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img data-recalc-dims="1" fetchpriority="high" decoding="async" src="https://i0.wp.com/blog.sus-happy.net/api/jetpack-publicize-custom/ogp.png?resize=320%2C180&#038;ssl=1" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Jetpack for WordPressのパブリサイズ共有を色々カスタマイズしてみた - SUSH-i LOG</div><div class="blogcard-snippet external-blogcard-snippet">様々な追加機能を用意してくれるJetpack for WordPressですが、その中のTwitterやFacebook等のSNSに投稿時に自動的に共有をしてくれるパブリサイズ共有で色々とカスタマイズしたい所があったので、調べたことのメモを...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://blog.sus-happy.net/jetpack-publicize-custom/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">blog.sus-happy.net</div></div></div></div></a>




</div>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">function change_jetpack_publicize_content( $post_id, $post ) {

    $POST_MESS = '_wpas_mess';

/*先頭カテゴリのスラッグを取得*/
    $categories = get_the_category($post_id);
    $category   = $categories[0]->slug;

/*投稿,下書き,スケジュール待ちのみ*/
    if ( !in_array( $post->post_status, array( 'publish', 'future' ) ) ) {
        return;
    }

/*カスタムメッセージのPOSTがあったら無視*/
   if ( !empty( $_POST['wpas_title'] ) ) {
        return;
    }

/*カスタムメッセージがある場合は無視*/
    if( get_post_meta( $post_id, $POST_MESS, TRUE ) ) {
        return;
    }

/*共有する文言の成形*/
    $publicize_custom_message = sprintf( 'Blog new Post:%s #Leaf_of_Heartwood #%s', $post->post_title, $category );
    
/*カスタムメッセージとして登録*/
    update_post_meta( $post_id, $POST_MESS, $publicize_custom_message );
    
/*postmetaが削除されないように$_POSTにも代入*/
    $_POST['wpas_title'] = $publicize_custom_message;
}
/*JetPackのパブリサイズ共有のsave_postに対する処理の優先度は「20」*/
add_action( 'save_post', 'change_jetpack_publicize_content', 19, 2 );</pre>



<p><br>まぁ詳しいことは参考記事に譲るとしても、処理ルーチンが変わったようで。<br>多分、最近までは前のスニペットでも動いてたあたりからして、最近のJetpackのバージョンアップで完全に前のスニペットで使っってたフックが使えなくなったんじゃないかなぁと言う気がします。</p>



<p>参考サイトのコードとの違いは、ショートURLの追加を削除（前述の通りTwitterしかパブリタイズしてないのですが、ショートURLとは別にフルURL追加されているので不要と判断してのことです）<br>あとは、改修前と同じになるように、先頭カテゴリのスラッグをタグとしてメッセージに追加させるようにしているだけです。<br>まぁ数行<code>For</code>文か<code>While</code>文追加すれば、複数カテゴリのスラッグも追加できるとは思いますが文字数足りなくなりそうなのと自分が1つしかカテゴリーを選ばないので、最初に来るカテゴリーのみとしてます。</p>



<p>とりあえず、これで「更新できません」のメッセージが消えてWordpressそのものの動作は安定したので様子見です。</p>



<h2 class="wp-block-heading"><span id="toc4">おまけ</span></h2>



<p>このブログの「n年前の記事です」の警告表示も、実はCodeSnippetで登録してるスニペットです。<br>と言うか、昔はプラグインもあったらしいけど今はなくなってるので、ググって最終的にQiitaで見つけてきたプラグインソースをスニペットで使ってます。<br>一応ソースは下のもの（元ソースからHTMLタグを<code>&lt;span&gt;</code>から<code>&lt;div&gt;</code>に、インナーCSSだったのをクラス指定に変更してます）</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">function show_old_alert($content) {
  if(!is_single($post)) return $content;
  $diff = strtotime(date("Ymd")) - strtotime(get_the_date("Ymd"));
  $diff = $diff / 60 / 60 / 24;
  if($diff > 365){
    $diff = floor($diff / 365);
    return "&lt;div class='old_alert'>この記事は".$diff."年以上前の記事です。&lt;br>情報が古い場合や、リンクが切れている場合がありますのでご注意下さい。&lt;/div>".$content;
  }else{
    return $content;
  }
}
add_action( 'the_content', 'show_old_alert' );</pre>



<p>で、クラス指定に切り替えたのは頭に警告マーク入れたかった（<code>::bofore</code>で指定）からですが、上下中央揃えにしたくて<code>flex-box</code>で対処</p>



<pre class="EnlighterJSRAW" data-enlighter-language="css" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">.old_alert {
	display:flex;
	border:1px solid #f00;
	border-radius:10px;
	padding:0 10px;
	align-items: center;
}

.old_alert::before {
	display:block;
	width:44px;
	padding-right:10px;
	font-family:"FontAwesome";
	content:"\f071";
	font-size:40px;
	color:#fcc800;
}</pre>



<p>これでちゃんと表示できてるからいいやで終わってますが、多分もう少しスマートに書けるんじゃないかなぁとは思ってます。もしそうならアドバイスくださいｗ<br>まぁ参考になればと言う事で締めておきます。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.terfes.net/2019/05/28/post-1989/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1989</post-id>	</item>
		<item>
		<title>自作スキン作ってみました</title>
		<link>https://www.terfes.net/2019/04/11/post-1928/</link>
		
		<dc:creator><![CDATA[ターフェス／浅田和哉]]></dc:creator>
		<pubDate>Wed, 10 Apr 2019 15:00:56 +0000</pubDate>
				<category><![CDATA[技術]]></category>
		<category><![CDATA[Cocoon]]></category>
		<category><![CDATA[TwiNight]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[スキン]]></category>
		<guid isPermaLink="false">https://www.terfes.net/?p=1928</guid>

					<description><![CDATA[Twitterでは制作過程を何度かつぶやいていたのですが、完成して一応公開することにしたので告知です。 デモとダウンロードについては、下のサイトからどうぞデモサイトを閉鎖しました。もしご利用を希望される方がおられましたら [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Twitterでは制作過程を何度かつぶやいていたのですが、完成して一応公開することにしたので告知です。</p>



<p><s>デモとダウンロードについては、下のサイトからどうぞ</s><br>デモサイトを閉鎖しました。もしご利用を希望される方がおられましたら個別にご相談ください（2019/05/26追記）</p>



<p>このサイトでも使っていますが、こちらは初期仕様の軽量版でデモサイトではフルバージョンで利用しています。<br>AMP ValidatorでチェックするとすぐにCSS容量で引っかかるので、フルバージョンはオプション仕様にしています。<br>如何せん、初期仕様のstyle.cssで12KB（min化しても8KB程度）あり、フルバージョンにすると+7KBになるので、色々調べてfunction.phpで二択化することにしました。<br>流石に、Cocoonブロック少しでも使うとAMP Validator通らないのはどうかと思ったので^^;</p>



<p>フルバージョンは主にborder-radiusの指定と、メディアのポジション指定の調整、アニメーションぽい処理の追加あたりですので、使わなくても全く問題ないので安心してください。<br>むしろ、作って置いて言うのもあれですが、前述の通りAMPキャッシュが効かなくなる可能性が高くなるのであまりお薦めはしませんw</p>



<p>まぁ需要は低そうなので、配布だけにとどめることにしています。<br>実際どうなんですかね？</p>


]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1928</post-id>	</item>
		<item>
		<title>SoundFluxを買ったよ</title>
		<link>https://www.terfes.net/2019/02/07/post-1744/</link>
					<comments>https://www.terfes.net/2019/02/07/post-1744/#respond</comments>
		
		<dc:creator><![CDATA[ターフェス／浅田和哉]]></dc:creator>
		<pubDate>Wed, 06 Feb 2019 15:00:08 +0000</pubDate>
				<category><![CDATA[技術]]></category>
		<category><![CDATA[SoundFlux]]></category>
		<category><![CDATA[レビュー]]></category>
		<guid isPermaLink="false">https://www.terfes.net/?p=1744</guid>

					<description><![CDATA[たまたま見かけたGizmodoの記事で興味を持って、思わずクラウドファンディングしたSoundFluxがようやく届き、簡単に使ってみたよと言う記事。あと、Wordpressの新エディタにも慣れておこうと言うのもあるw 目 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>たまたま見かけた<a rel="noopener" target="_blank" href="https://www.gizmodo.jp/2018/10/177883_campfire.html">Gizmodoの記事<span class="fa fa-external-link external-icon anchor-icon"></span></a>で興味を持って、思わずクラウドファンディングした<a rel="noopener" target="_blank" href="https://camp-fire.jp/projects/view/99950">SoundFlux<span class="fa fa-external-link external-icon anchor-icon"></span></a>がようやく届き、簡単に使ってみたよと言う記事。<br>あと、Wordpressの新エディタにも慣れておこうと言うのもあるw</p>




  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6"><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">最初に</a></li><li><a href="#toc2" tabindex="0">良い点・よくない点</a></li><li><a href="#toc3" tabindex="0">Complyイヤーチップに関して</a></li><li><a href="#toc4" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">最初に</span></h2>



<p>Twitterで散々言っているのですが、結論を言うと、かなり好みの音を出してくれてます。<br>ただ気になる点もいくつか見られたと言うのが本音</p>



<h2 class="wp-block-heading"><span id="toc2">良い点・よくない点</span></h2>



<p>個人的に気になった点など箇条書きで。</p>



<div class="wp-block-cocoon-blocks-tab-box blank-box bb-tab bb-good bb-red block-box">
<ul class="wp-block-list"><li>適度なサイズな割に軽くて、装着感も良い</li><li>プリセットイコライザの切り替えで、曲に合わせて低音から高音まで都合よく好みの音を出してくれる</li><li>ほぼ左右のボタンで同じ動作をしてくれるので迷わない</li><li>左右がそれぞれ独立して接続できるので片耳利用もできる</li><li>ほぼ遅延なく再生する（0.1秒前後の遅延はあり。未確認だけど音ゲーはタイミング調整すればいけると思う）</li></ul>



<p></p>
</div>



<div class="wp-block-cocoon-blocks-tab-box blank-box bb-tab bb-bad block-box">
<ul class="wp-block-list"><li>音楽を聴きながら会話も聞き取れる（環境音取り込み）とうたってるが、マイク感度が不安定なのか他の理由か聞き取れないことが多数。おまけだと思えば許容範囲内</li><li>特に右側が酷いが、環境音取り込み中にノイズが入る（TVが近いからかもだけど同じ報告がTwitterでも見られた）</li><li>屋外利用で環境音取り込み時、風切り音の取り込みが酷く使い物にならない</li><li>ケースに入れても充電状態にならないことがある（Twitterで解決策を教えていただき解決済みですが、直感的にできてないのはマイナスだろうと）</li><li>左右それぞれを接続した時に同一名称で表示されるので、接続するまで左右の区別が接続リスト上でつかない（下図参照。上が左で、下が右だったはず）</li></ul>



<div class="wp-block-image"><figure class="aligncenter"><a rel="noopener" target="_blank" href="//i2.wp.com/terfes.net/wp/wp-content/uploads/2019/02/084ccf2d-f681-4f7c-b32e-8e07269da372.jpg"><img decoding="async" width="500" height="455" src="//i3.wp.com/terfes.net/wp/wp-content/uploads/2019/02/084ccf2d-f681-4f7c-b32e-8e07269da372-500x455.jpg" alt="iPhoneXR Bluetooth接続リスト" class="wp-image-1752" srcset="https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2019/02/084ccf2d-f681-4f7c-b32e-8e07269da372.jpg?resize=500%2C455&amp;ssl=1 500w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2019/02/084ccf2d-f681-4f7c-b32e-8e07269da372.jpg?resize=768%2C699&amp;ssl=1 768w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2019/02/084ccf2d-f681-4f7c-b32e-8e07269da372.jpg?resize=800%2C729&amp;ssl=1 800w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2019/02/084ccf2d-f681-4f7c-b32e-8e07269da372.jpg?w=817&amp;ssl=1 817w" sizes="(max-width: 500px) 100vw, 500px" /></a></figure></div>
</div>



<h2 class="wp-block-heading"><span id="toc3">Complyイヤーチップに関して</span></h2>



<figure class="wp-block-image alignfull"><a rel="noopener" target="_blank" href="//i2.wp.com/terfes.net/wp/wp-content/uploads/2019/02/img_0159.jpg"><img data-recalc-dims="1" loading="lazy" decoding="async" width="800" height="600" src="https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2019/02/img_0159.jpg?resize=800%2C600&#038;ssl=1" alt="Comply Tw-type装着" class="wp-image-1746" srcset="https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2019/02/img_0159.jpg?resize=800%2C600&amp;ssl=1 800w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2019/02/img_0159.jpg?resize=500%2C375&amp;ssl=1 500w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2019/02/img_0159.jpg?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2019/02/img_0159.jpg?w=2512&amp;ssl=1 2512w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2019/02/img_0159.jpg?w=3768&amp;ssl=1 3768w" sizes="(max-width: 800px) 100vw, 800px" /></a></figure>



<p><a rel="noopener" target="_blank" href="https://www.comply.jp">Comply<span class="fa fa-external-link external-icon anchor-icon"></span></a>党員なので、標準のイヤーチップから速攻でComplyにイヤーチップを交換したわけですが。<br>最終的に、写真のように<a rel="noopener" target="_blank" href="https://www.comply.jp/type/tw/">Tw-type<span class="fa fa-external-link external-icon anchor-icon"></span></a>で落ち着きました。</p>



<div class="wp-block-cocoon-blocks-tab-box blank-box bb-tab bb-amazon bb-blue block-box">
<div class="product-item-box amazon-item-box no-icon product-item-error cf"><div><a rel="nofollow noopener" target="_blank" href="https://www.amazon.co.jp/exec/obidos/ASIN/B07KF78FJX/oujunoha-22/">Amazonで詳細を見る<span class="fa fa-external-link external-icon anchor-icon"></span></a></div></div>
</div>



<p><a rel="noopener" target="_blank" href="https://www.comply.jp/type/ts/">Ts-type<span class="fa fa-external-link external-icon anchor-icon"></span></a>も持っている（Mサイズ）ので試したのですが、ケースに入れた際に多少浮いてしまうようで、少し押し込まないと充電状態の赤ランプが点灯せず、触った際に少しぶれるとすぐに充電状態が解除されてしまうので正直<a rel="noopener" target="_blank" href="https://www.comply.jp/type/tw/">Tw-type<span class="fa fa-external-link external-icon anchor-icon"></span></a>以外は微妙な感じです。<br> 標準チップの形状が<a rel="noopener" target="_blank" href="https://www.comply.jp/type/ts/">Ts-type<span class="fa fa-external-link external-icon anchor-icon"></span></a>に近いのでいけると思っただけに残念</p>



<p>あとノズルサイズですが、多分400で大丈夫です。<br><a rel="noopener" target="_blank" href="https://www.comply.jp/type/tw/">Tw-type<span class="fa fa-external-link external-icon anchor-icon"></span></a>は1ペアを購入したので比較できないのですが、手持ちの<a rel="noopener" target="_blank" href="https://www.comply.jp/type/ts/">Ts-type<span class="fa fa-external-link external-icon anchor-icon"></span></a>は400で装着感に問題なかったので。</p>



<h2 class="wp-block-heading"><span id="toc4">まとめ</span></h2>



<p>クラウドファンディングのおかげで44％OFFだったとはいえ、1万切ってる価格を考えれば個人的にはかなりいい買い物だったと思います。<br>長時間使ってないので耐久性はわかりませんが、バッテリが２時間程度で上がると言うツイートも見てるのでその点は少し不安材料。<br>
とはいえ、普段使いの中で２時間以上使い続けてるのは稀なので気にしなくても大丈夫かもしれませんがw<br>
まだまだ使い始めたばかりなので、この辺はもう少し様子見です。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.terfes.net/2019/02/07/post-1744/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1744</post-id>	</item>
		<item>
		<title>RaspberryPiにPleromaをインストールしてみる（Pleroma導入編）</title>
		<link>https://www.terfes.net/2018/05/05/post-1470/</link>
					<comments>https://www.terfes.net/2018/05/05/post-1470/#respond</comments>
		
		<dc:creator><![CDATA[ターフェス／浅田和哉]]></dc:creator>
		<pubDate>Fri, 04 May 2018 15:00:56 +0000</pubDate>
				<category><![CDATA[技術]]></category>
		<category><![CDATA[pleroma]]></category>
		<category><![CDATA[Raspberrypi]]></category>
		<guid isPermaLink="false">https://www.terfes.net/?p=1470</guid>

					<description><![CDATA[前のエントリの続き。Pleromaのインストールから。 目次 概略必須パッケージのインストール基本ツールパッケージのインストールelixirのインストールPleromaのインストールpleromaユーザの作成Plerom [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.terfes.net/?p=1433&amp;preview=true">前のエントリ</a>の続き。Pleromaのインストールから。</p>
<p><span id="more-1470"></span></p>

  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8"><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">概略</a></li><li><a href="#toc2" tabindex="0">必須パッケージのインストール</a><ol><li><a href="#toc3" tabindex="0">基本ツールパッケージのインストール</a></li><li><a href="#toc4" tabindex="0">elixirのインストール</a></li></ol></li><li><a href="#toc5" tabindex="0">Pleromaのインストール</a><ol><li><a href="#toc6" tabindex="0">pleromaユーザの作成</a></li><li><a href="#toc7" tabindex="0">Pleromaのインストール</a></li><li><a href="#toc8" tabindex="0">ローカル環境での動作確認</a></li><li><a href="#toc9" tabindex="0">ルーターのポート開放</a></li><li><a href="#toc10" tabindex="0">nginxの設定</a></li><li><a href="#toc11" tabindex="0">Let&#8217;s Encryptの証明書取得</a></li><li><a href="#toc12" tabindex="0">pleromaのサービス登録</a></li></ol></li><li><a href="#toc13" tabindex="0">&nbsp;最終作業</a><ol><li><a href="#toc14" tabindex="0">外部ブラウザでアクセス</a></li><li><a href="#toc15" tabindex="0">アカウント追加を停止する</a></li><li><a href="#toc16" tabindex="0">Let&#8217;s Encryptの自動更新を有効にする</a></li></ol></li><li><a href="#toc17" tabindex="0">参考にしたサイト</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">概略</span></h2>

<a rel="noopener" target="_blank" href="https://i2p.rocks/blog/the-magical-world-of-pleroma-setting-up-your-instance.html" title="404 Not Found" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fi2p.rocks%2Fblog%2Fthe-magical-world-of-pleroma-setting-up-your-instance.html?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">404 Not Found</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://i2p.rocks/blog/the-magical-world-of-pleroma-setting-up-your-instance.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">i2p.rocks</div></div></div></div></a>
<p>このページがPleromaのインストールの手順としてはいいらしいのだけど、他のページもいくつか参考にしてある程度独自にやって見た。</p>
<h2><span id="toc2">必須パッケージのインストール</span></h2>
<h3><span id="toc3">基本ツールパッケージのインストール</span></h3>
<p>まずは、<code>git</code>、<code>nginx</code>、<code>postgresql</code>など必要なものをインストール</p>
<pre><code>$&nbsp;sudo update &amp;&amp; sudo apt dist-upgrade &amp;&amp; sudo apt autoremove &amp;&amp; sudo apt autoclean
$ sudo apt-get install build-essential git postgresql nginx letsencrypt</code></pre>
<p><code>build-essential</code>は最新になっていてインストールされなかったので外してもいいかも。<br />
<code>certbot</code>はなんかよく分からないけど認証取ってもらえなかったので、最終的に<code>letsencrypt</code>を利用する方向にしたのでここでインストールしておく。</p>
<p>後、この時点でDDNS取ってるので、万が一に備えて<code>/var/www/html/index.html</code>を作成しておく。</p>
<pre><code>$ sudo nano /var/www/html/index.html</code></pre>
<p>nginxを使っていることを隠すのが目的なので、内容はなんでもいいのですが、</p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang="ja"&gt;
&lt;head&gt;
&lt;meta charset="utf-8"&gt;
&lt;title&gt;test&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;test&lt;/h1&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>こんな感じのものにしています。</p>
<h3><span id="toc4">elixirのインストール</span></h3>
<p>elixirのインストールに関しては、ほとんどのサイトでDebianかUbuntu用の手順なので、下記ページのRaspbian手順通りにインストール準備を進める。</p>

<a rel="noopener" target="_blank" href="https://elixir-lang.org/install.html#raspberry-pi" title="Installing Elixir" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/elixir-lang.org/images/social/elixir-og-card.jpg?resize=320%2C180&#038;ssl=1" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Installing Elixir</div><div class="blogcard-snippet external-blogcard-snippet">Website for Elixir</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://elixir-lang.org/install.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">elixir-lang.org</div></div></div></div></a>
<pre><code>$ echo "deb https://packages.erlang-solutions.com/debian stretch contrib" | sudo tee /etc/apt/sources.list.d/erlang-solutions.list
$ wget https://packages.erlang-solutions.com/debian/erlang_solutions.asc
$ sudo apt-key add erlang_solutions.asc
$ sudo apt update</code></pre>
<p>これで準備ができたので、<code>elixir</code>と<code>esl-erlang</code>のインストールを実施。</p>
<pre><code>$ sudo apt-get install --no-install-recommends elixir esl-erlang</code></pre>
<p>インストールできたら、キーチェインファイルは一応削除しておく</p>
<pre><code>$ rm erlang_solution.asc</code></pre>
<h2><span id="toc5">Pleromaのインストール</span></h2>
<p>インストール可能な必要パッケージのインストールが済んだので、ここからPleromaのインストール。</p>
<h3><span id="toc6">pleromaユーザの作成</span></h3>
<p>最初にPleroma用ユーザーを作成。ほぼ悩まなくていいと思います。フルネーム〜その他までは特に必要ないのでEnterで大丈夫。</p>
<pre><code>$ sudo adduser pleroma
新しいグループ `pleroma' (1001) を追加しています...
新しいユーザ `pleroma' (1001) をグループ `pleroma' として追加しています...
ホームディレクトリ `/home/pleroma' を作成しています...
`/etc/skel' からファイルをコピーしています...
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました
pleroma のユーザ情報を変更中
新しい値を入力してください。標準設定値を使うならリターンを押してください
	フルネーム []: 
	部屋番号 []: 
	職場電話番号 []: 
	自宅電話番号 []: 
	その他 []: 
以上で正しいですか? [Y/n] y</code></pre>
<p>次に、pleromaユーザーをsudoグループに所属させ、pleromaユーザに切り替える。</p>
<pre><code>$ usermod -aG sudo pleroma
$ su - pleroma</code></pre>
<h3><span id="toc7">Pleromaのインストール</span></h3>
<p>pleromaのソースをクローンする。</p>
<pre><code>$ git clone https://git.pleroma.social/pleroma/pleroma</code></pre>
<p>クローンしたら、配下にできた<code>~/pleroma</code>ディレクトリへ移動して、追加で必要なパッケージのインストール。</p>
<pre><code>$ cd pleroma
$ mix deps.get
!!! RUNNING IN LOCALHOST DEV MODE! !!!
FEDERATION WON'T WORK UNTIL YOU CONFIGURE A dev.secret.exs
Could not find Hex, which is needed to build dependency :phoenix
Shall I install Hex? (if running non-interactively, use "mix local.hex --force") [Yn] y</code></pre>
<p>上記のように<code>Hex</code>のインストールを聞かれるのでインストールする。</p>
<p>作業が終わったら、コンフィグを生成する。</p>
<pre><code> $ mix generate_config
!!! RUNNING IN LOCALHOST DEV MODE! !!!
FEDERATION WON'T WORK UNTIL YOU CONFIGURE A dev.secret.exs
Could not find "rebar3", which is needed to build dependency :parse_trans
I can install a local copy which is just used by Mix
Shall I install rebar3? (if running non-interactively, use "mix local.rebar --force") [Yn] y</code></pre>
<p>ここでも<code>rebar3</code>のインストールを求められるので、インストール。<br />
少し時間がかかるので、まったり待つ。<br />
少々Warningメッセージが目立つログが流れるが動作に支障はなさそうなので待つ。</p>
<p>最後に、ドメイン名、インスタンス名、メールアドレスを尋ねられるのでそれぞれ入力して終了。</p>
<pre><code>--- THIS WILL OVERWRITE YOUR config/generated_config.exs! ---

What is your domain name? (e.g. pleroma.soykaf.com): [ドメイン名]
What is the name of your instance? (e.g. Pleroma/Soykaf): [インスタンス名]
What's your admin email address: [メールアドレス]

Writing config to config/generated_config.exs.

Check it and configure your database, then copy it to either config/dev.secret.exs or config/prod.secret.exs

Writing setup_db.psql, please run it as postgre superuser, i.e.: sudo su postgres -c 'psql -f config/setup_db.psql'</code></pre>
<p>生成した<code>generated_config.exs</code>を記載通りに<code>prod.secret.exs</code>に変更する。</p>
<pre><code>$ cp config/generated_config.exs config/prod.secret.exs</code></pre>
<p><code>postgresql</code>データベースもセットアップファイルを生成してるので記載通りにコマンドを走らせる。</p>
<pre><code>$ sudo su postgres -c 'psql -f config/setup_db.psql'</code></pre>
<p>データベースを作成したら、マイグレーションを実行する</p>
<pre><code>$ MIX_ENV=prod mix ecto.migrate</code></pre>
<p>これも時間もかかり、warningも目立つがそのまま待つ。</p>
<h3><span id="toc8">ローカル環境での動作確認</span></h3>
<p>マイグレーション終わったら、まずはローカル環境で動作確認。<br />
そのため、<code>pleroma</code>を起動する。</p>
<pre><code>$ MIX_ENV=prod mix phx.server</code></pre>
<p>起動するとログがガンガン流れるので、ブラウザで4000番ポートへアクセスする</p>
<pre>http://[ラズパイのIPアドレス]:4000/</pre>
<p>これでサイトが表示ができれば問題ないので、CTRL+Cで<code>pleroma</code>を終了させる。</p>
<h3><span id="toc9">ルーターのポート開放</span></h3>
<p>ここまででやっておいていいけど、ここでルーターのポート解放を実施するのが吉かなと。</p>
<p>我が家は、NTTのHGW（PR-500MI）なので、詳細設定→静的NAT設定→ワンタッチ設定にあるWebサーバ設定を有効にして、ラズパイのIPアドレスを指定して終わり。</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-medium wp-image-1503" src="https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/05/pr500mi_nat.png?resize=500%2C172&#038;ssl=1" alt="" width="500" height="172" srcset="https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/05/pr500mi_nat.png?resize=500%2C172&amp;ssl=1 500w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/05/pr500mi_nat.png?resize=768%2C265&amp;ssl=1 768w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/05/pr500mi_nat.png?resize=800%2C276&amp;ssl=1 800w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/05/pr500mi_nat.png?resize=320%2C110&amp;ssl=1 320w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/05/pr500mi_nat.png?resize=414%2C143&amp;ssl=1 414w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/05/pr500mi_nat.png?resize=600%2C207&amp;ssl=1 600w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/05/pr500mi_nat.png?w=1292&amp;ssl=1 1292w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<h3><span id="toc10">nginxの設定</span></h3>
<p><code>pleroma</code>側で<code>nginx</code>の設定ファイルを用意してくれているので、<code>/etc/nginx/sites-enabled/</code>へコピーする。</p>
<pre><code>$&nbsp;cp /home/pleroma/pleroma/installation/pleroma.nginx /etc/nginx/sites-enabled/</code></pre>
<p>設定ファイルを開き、<code>example.tld</code>になっている箇所を漏れなく自分のドメイン名に変更する。</p>
<pre><code>$ sudo nano /etc/nginx/sites-enabled/pleroma.nginx</code></pre>
<h3><span id="toc11">Let&#8217;s Encryptの証明書取得</span></h3>
<p>ここが一番苦しんだ。参考にしているサイトの手順で行うと、nginxが再起動を受け付けなくなる（<code>/etc/nginx/sites-enabled/pleroma.nginx</code>が証明書取得している前提の設定になっているのが原因なのだが、設定の再読み込みする必要があるため）</p>
<p>仕方ないので<code>certbot</code>を諦めて、<code>letsencrypt</code>を実行する方法を取った。</p>
<pre><code>$ sudo letsencrypt certonly --standalone -d [ドメイン名]</code></pre>
<div class="memo-box">結局<code>--standalone</code>オプションを使ったので<code>certbot</code>でも大丈夫な気はする</div>
<p>証明書の取得ができたら、<code>nginx</code>を再起動して設定を読み込ませる。</p>
<pre><code>$ sudo systemctl restart nginx</code></pre>
<p>ここで、エラーが出るようだと証明書の取得に失敗しているか、<code>/etc/nginx/sites-enabled/pleroma.nginx</code>に間違いがある。</p>
<h3><span id="toc12">pleromaのサービス登録</span></h3>
<p>先にこれを行ってもいいのだけど、なんとなくここで。実際は<code>nginx</code>の設定を終わらせた直後に行なうべきかと。</p>
<p>最初に、pleromaに用意してある<code>systemctl</code>用のスクリプトを<code>/etc/systemd/system/</code>へコピーする</p>
<pre><code>$ cp /home/pleroma/pleroma/installation/pleroma.service /etc/systemd/system/</code></pre>
<p>コピーした<code>pleroma.service</code>に追記が必要なので<code>nano</code>で編集する。追記箇所は下の+の1行。</p>
<pre><code>[Unit]
Description=Pleroma social network
After=network.target postgresql.service

[Service]
User=pleroma
WorkingDirectory=/home/pleroma/pleroma
Environment="HOME=/home/pleroma"
+ Environment="MIX_ENV=prod"
ExecStart=/usr/local/bin/mix phx.server
ExecReload=/bin/kill $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=pleroma.service</code></pre>
<p>編集後、サービスを有効化する。</p>
<pre><code>$ sudo systemctl enable pleroma --now</code></pre>
<div class="memo-box">
<p>既にサービスが動いてる旨のエラーが出るかも（<code>--now</code>オプションの影響）なので、以下のコマンドでもいいかも</p>
<pre><code>$ sudo systemctl enable pleroma
$ sudo systemctl start pleroma</code></pre>
</div>
<h2><span id="toc13">&nbsp;最終作業</span></h2>
<h3><span id="toc14">外部ブラウザでアクセス</span></h3>
<p>設置作業は以上で終わりなので、スマホ等でサイトへアクセスする。（PCからならテザリングか外部のVPN経由で）</p>
<p>問題なければ、ちゃんと表示されるのでアカウントを作成する。</p>
<h3><span id="toc15">アカウント追加を停止する</span></h3>
<p>アカウントができたら、これ以上のアカウント追加をできないよう<code>/home/pleroma/pleroma/config/prod.secret.exs</code>を<code>nano</code>で開く。</p>
<pre><code>$ sudo nano /home/pleroma/pleroma/config/prod.secret.exs</code></pre>
<p><code>registrations_open</code>を下記のように編集する</p>
<pre><code>  registrations_open: false</code></pre>
<p>編集終了後、<code>pleroma</code>サービスを再起動して置く</p>
<pre><code>$ sudo systemctl reload pleroma</code></pre>
<h3><span id="toc16">Let&#8217;s Encryptの自動更新を有効にする</span></h3>
<p>30日を超えて証明書の更新がないと無効になるようなので、定期的に自動更新をするように設定する必要がある。</p>
<p>まずは、ちゃんと更新ができるか確認。</p>
<pre><code>$ sudo certbot renew</code></pre>
<p>以下のようなメッセージが出ているならOK。</p>
<pre><code>Saving debug log to /var/log/letsencrypt/letsencrypt.log

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/[ドメイン名].conf
-------------------------------------------------------------------------------
Cert not yet due for renewal

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/[ドメイン名]/fullchain.pem (skipped)
No renewals were attempted.</code></pre>
<p>要するに、取得したばかりで更新の必要がないと言ってるだけで、更新手続きそのものは正常にできてる。</p>
<p>今度は、<code>crontab</code>ファイルに定期実行するよう追記する。</p>
<pre><code>0  1    1,15 * *        root    /usr/bin/cerbot renew --quiet</code></pre>
<p>毎月1日15日AM1:00に更新を実行するようにしています。</p>
<h2><span id="toc17">参考にしたサイト</span></h2>

<a rel="noopener" target="_blank" href="https://i2p.rocks/blog/the-magical-world-of-pleroma-setting-up-your-instance.html" title="404 Not Found" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fi2p.rocks%2Fblog%2Fthe-magical-world-of-pleroma-setting-up-your-instance.html?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">404 Not Found</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://i2p.rocks/blog/the-magical-world-of-pleroma-setting-up-your-instance.html" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">i2p.rocks</div></div></div></div></a>

<a rel="noopener" target="_blank" href="https://git.pleroma.social/pleroma/pleroma/wikis/Pleroma%e3%81%ae%e5%85%a5%e3%82%8c%e6%96%b9" title="https://git.pleroma.social/pleroma/pleroma/wikis/Pleroma%e3%81%ae%e5%85%a5%e3%82%8c%e6%96%b9" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fgit.pleroma.social%2Fpleroma%2Fpleroma%2Fwikis%2FPleroma%25e3%2581%25ae%25e5%2585%25a5%25e3%2582%258c%25e6%2596%25b9?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">https://git.pleroma.social/pleroma/pleroma/wikis/Pleroma%e3%81%ae%e5%85%a5%e3%82%8c%e6%96%b9</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://git.pleroma.social/pleroma/pleroma/wikis/Pleroma%e3%81%ae%e5%85%a5%e3%82%8c%e6%96%b9" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">git.pleroma.social</div></div></div></div></a>
<p><iframe title="Pleromaのお一人様インスタンスをUbuntu 16.04で立てた作業ログ - にせねこメモ" src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fnixeneko.hatenablog.com%2Fentry%2F2018%2F03%2F20%2F152316" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;"></iframe></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.terfes.net/2018/05/05/post-1470/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1470</post-id>	</item>
		<item>
		<title>RaspberryPiにPleromaをインストールしてみる（下準備編）</title>
		<link>https://www.terfes.net/2018/05/05/post-1433/</link>
					<comments>https://www.terfes.net/2018/05/05/post-1433/#respond</comments>
		
		<dc:creator><![CDATA[ターフェス／浅田和哉]]></dc:creator>
		<pubDate>Fri, 04 May 2018 15:00:32 +0000</pubDate>
				<category><![CDATA[技術]]></category>
		<category><![CDATA[pleroma]]></category>
		<category><![CDATA[Raspberrypi]]></category>
		<guid isPermaLink="false">https://www.terfes.net/?p=1433</guid>

					<description><![CDATA[たまたま、浮いてるラズパイもあるしでやってみた記録を自分用にメモ。 但し、サーバー建ては初体験。 目次 Raspbian Stretch LiteのインストールRaspbianの初期設定アップデートと自動更新の設定IPア [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>たまたま、浮いてるラズパイもあるしでやってみた記録を自分用にメモ。<br />
但し、サーバー建ては初体験。<br />
<span id="more-1433"></span></p>

  <div id="toc" class="toc tnt-number-detail toc-center tnt-number_detail border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10"><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Raspbian Stretch Liteのインストール</a></li><li><a href="#toc2" tabindex="0">Raspbianの初期設定</a><ol><li><a href="#toc3" tabindex="0">アップデートと自動更新の設定</a></li><li><a href="#toc4" tabindex="0">IPアドレスの固定</a></li><li><a href="#toc5" tabindex="0">raspi-configの設定</a></li><li><a href="#toc6" tabindex="0">セキュリティ向上作業</a></li></ol></li><li><a href="#toc7" tabindex="0">秘密鍵を使ってssh接続する＋パスワード入力を省略する</a><ol><li><a href="#toc8" tabindex="0">Mac側での作業</a></li><li><a href="#toc9" tabindex="0">ラズパイ側での作業</a></li><li><a href="#toc10" tabindex="0">SSHのクライアントのConfigファイルの設定</a></li></ol></li><li><a href="#toc11" tabindex="0">DDNSの設定</a><ol><li><a href="#toc12" tabindex="0">DUC（Dynamic Update Client）のインストール</a></li><li><a href="#toc13" tabindex="0">DUCをサービス登録する</a></li></ol></li><li><a href="#toc14" tabindex="0">参考にしたサイト</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">Raspbian Stretch Liteのインストール</span></h2>
<p>Etcherを使ってimgファイルを書きこみ。</p>

<a rel="noopener" target="_blank" href="https://etcher.io" title="balenaEtcher - Flash OS images to SD cards &amp; USB drives" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/uploads-ssl.webflow.com/636ab6ba0e1bd250e3aaedaf/65ef146b4576693f0c5d825b_OG%20image.png?resize=320%2C180&#038;ssl=1" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">balenaEtcher - Flash OS images to SD cards & USB drives</div><div class="blogcard-snippet external-blogcard-snippet">A cross-platform tool to flash OS images onto SD cards and USB drives safely and easily. Free and open source for makers...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://etcher.io" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">etcher.io</div></div></div></div></a>
<p>一度マウントが解除されるのでマウントし直して、ターミナルから次のコマンドで空ファイルを作り、SSHを有効にしておく（今のバージョンは無効になってるらしいので）</p>
<pre><code>&gt; touch /Volumes/boot/ssh</code></pre>
<div class="memo-box">何度かやり直してるので面倒になってimgファイルに直接埋めこんだので、今は省略してる</div>
<p>ラズパイは有線LAN接続して、SDカードを入れ電源をONにする。</p>
<h2><span id="toc2">Raspbianの初期設定</span></h2>
<h3><span id="toc3">アップデートと自動更新の設定</span></h3>
<p>SSHで接続して、アップデート実施。</p>
<pre><code>$ sudo apt-get update &amp;&amp; sudo apt-get -y dist-upgrade &amp;&amp; sudo apt-get -y autoremove &amp;&amp; sudo apt-get autoclean
$ sudo rpi-update</code></pre>
<div class="alert-box"><code>rpi-update</code>はやらなくてもいいかもだけど、最終的に外部公開するのが目標なので念のため実施</div>
<p>次に、ソフトの自動更新するようunattended-upgradesを導入。</p>
<pre><code>$ sudo apt-get install -y unattended-upgrades</code></pre>
<p>このままでは動作しないようなので、<code>/etc/apt/apt.conf.d/20auto-upgrades</code>を再生成する。</p>
<pre><code>$ sudo dpkg-reconfigure -plow unattended-upgrades</code></pre>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-medium wp-image-1483" src="https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/unattended-upgrades1.png?resize=500%2C302&#038;ssl=1" alt="" width="500" height="302" srcset="https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/unattended-upgrades1.png?resize=500%2C302&amp;ssl=1 500w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/unattended-upgrades1.png?resize=320%2C193&amp;ssl=1 320w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/unattended-upgrades1.png?resize=414%2C250&amp;ssl=1 414w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/unattended-upgrades1.png?w=570&amp;ssl=1 570w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<p>この画面で、「アップデートがあった場合、自動的にダウンロードとアップデートしていいか？」と聞かれるので&lt;Yes&gt;を選択。</p>
<p><a href="https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/unattended-upgrades2.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter wp-image-1484 size-medium" src="https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/unattended-upgrades2.png?resize=500%2C302&#038;ssl=1" alt="" width="500" height="302" srcset="https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/unattended-upgrades2.png?resize=500%2C302&amp;ssl=1 500w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/unattended-upgrades2.png?resize=320%2C193&amp;ssl=1 320w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/unattended-upgrades2.png?resize=414%2C250&amp;ssl=1 414w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/unattended-upgrades2.png?w=570&amp;ssl=1 570w" sizes="(max-width: 500px) 100vw, 500px" /></a></p>
<p>次にこの画面になるので、画像にあるように次の内容に修正する。</p>
<pre><code>"origin=${distro_id},codename=${distro_codename}";</code></pre>
<p>最低限これで動作するはず。これ以外の設定は下記ページ参照。</p>

<a rel="noopener" target="_blank" href="https://qiita.com/kitsuyui/items/11b4c0ebb9d1d2181853" title="Debian 系で unattended-upgrades を有効にする場合の追加設定 (メール通知, autoremove, autoclean, 再起動) - Qiita" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFtYXpvbmF3cy5jb20lMkYwJTJGMjU4ODYlMkZwcm9maWxlLWltYWdlcyUyRjE0NzM2ODQ0MzQ_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmJnPUZGRkZGRiZmbT1wbmczMiZzPTg5NzlkMzZjMGY1MGUzMTQ1ZDFhYmYyOTViYmY1ZDk0%26blend-x%3D120%26blend-y%3D462%26blend-w%3D90%26blend-h%3D90%26blend-mode%3Dnormal%26mark64%3DaHR0cHM6Ly9xaWl0YS1vcmdhbml6YXRpb24taW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1vcmdhbml6YXRpb24taW1hZ2UlMkZkYTI2NzkwZDYyYzk3YzE5NzQ4ODFlZjhkMmM3ZmIwZDYyMDdiN2RjJTJGb3JpZ2luYWwuanBnJTNGMTQxNzc2NTQxMj9peGxpYj1yYi00LjAuMCZ3PTQ0Jmg9NDQmZml0PWNyb3AmbWFzaz1jb3JuZXJzJmNvcm5lci1yYWRpdXM9OCZiZz1GRkZGRkYmYm9yZGVyPTIlMkNGRkZGRkYmZm09cG5nMzImcz01MGE5NDE2ZDgzMDQ1MTM0ZThjY2QwNWJjYmI1OGU3Ng%26mark-x%3D186%26mark-y%3D515%26mark-w%3D40%26mark-h%3D40%26s%3D5cd3b46d72757ae161e3d3dd5185718c?ixlib=rb-4.0.0&#038;w=1200&#038;fm=jpg&#038;mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9RGViaWFuJTIwJUU3JUIzJUJCJUUzJTgxJUE3JTIwdW5hdHRlbmRlZC11cGdyYWRlcyUyMCVFMyU4MiU5MiVFNiU5QyU4OSVFNSU4QSVCOSVFMyU4MSVBQiVFMyU4MSU5OSVFMyU4MiU4QiVFNSVBMCVCNCVFNSU5MCU4OCVFMyU4MSVBRSVFOCVCRiVCRCVFNSU4QSVBMCVFOCVBOCVBRCVFNSVBRSU5QSUyMCUyOCVFMyU4MyVBMSVFMyU4MyVCQyVFMyU4MyVBQiVFOSU4MCU5QSVFNyU5RiVBNSUyQyUyMGF1dG9yZW1vdmUlMkMlMjBhdXRvY2xlJUUyJTgwJUE2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LXBhZD0wJnM9ZjY5MTk3ZGVlODViZTRlYmQxYzMzMmZiZTc4ZDEwMTE&#038;mark-x=120&#038;mark-y=112&#038;blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBraXRzdXl1aSZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPTNkODAwMTdiMDBiZmMzMTM1MTkzZjMxNWNlMmNlNzI3&#038;blend-x=242&#038;blend-y=454&#038;blend-w=838&#038;blend-h=46&#038;blend-fit=crop&#038;blend-crop=left%2Cbottom&#038;blend-mode=normal&#038;txt64=5qCq5byP5Lya56S-5LiA5LyR&#038;txt-x=242&#038;txt-y=539&#038;txt-width=838&#038;txt-clip=end%2Cellipsis&#038;txt-color=%231E2121&#038;txt-font=Hiragino%20Sans%20W6&#038;txt-size=28&#038;s=1a503e2e68b7afbc316b013150b5c22b" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Debian 系で unattended-upgrades を有効にする場合の追加設定 (メール通知, autoremove, autoclean, 再起動) - Qiita</div><div class="blogcard-snippet external-blogcard-snippet">何台か趣味のサーバ用に Ubuntu Server を動かしている。 趣味のサーバは時間が取れないことがあるので、手動アップデートだと忘れてしまうことがある。 unattended-upgrades を有効にすると、セキュリティ上重要なアッ...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://qiita.com/kitsuyui/items/11b4c0ebb9d1d2181853" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">qiita.com</div></div></div></div></a>
<h3><span id="toc4">IPアドレスの固定</span></h3>
<p><code>/etc/dhcpcd.conf</code>を編集する。</p>
<pre><code>sudo nano /etc/dhcpcd.conf</code></pre>
<p>編集するのは次の箇所。</p>
<pre><code>interface eth0
static ip_address=[固定するラズパイのIPアドレス]
static routers=[デフォルトゲートウェイ（基本的にルータのIPアドレス）]
static domain_name_servers=[DNSサーバアドレス（基本的にルータのIPアドレス）] 1.1.1.1</code></pre>
<p>ルータ側で払い出しIPアドレスを固定することができるならそっちもしておいた方が、いざって時にいいかも。</p>
<p>セカンダリDNSに指定した1.1.1.1は、最近公開されたプライバシー重視らしいパブリックDNS。<br />
詳しいことはこちら。</p>

<a rel="noopener" target="_blank" href="https://1.1.1.1/ja-JP/" title="1.1.1.1 — インターネットを高速にする無料アプリ" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/1.1.1.1/media/social-share.png?resize=320%2C180&#038;ssl=1" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">1.1.1.1 — インターネットを高速にする無料アプリ</div><div class="blogcard-snippet external-blogcard-snippet">携帯電話でのインターネット利用を高速化し、プライバシー保護と信頼性を強化する無料アプリを、インストールしてください。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://1.1.1.1" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">1.1.1.1</div></div></div></div></a>
<div class="information-box">別に定番のGoogleのパブリックDNSである8.8.8.8でもいいと思う。</div>
<h3><span id="toc5">raspi-configの設定</span></h3>
<p><code>raspi-config</code>を起動して、設定を実施。</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-medium wp-image-1482" src="https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/raspi-config.png?resize=500%2C302&#038;ssl=1" alt="" width="500" height="302" srcset="https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/raspi-config.png?resize=500%2C302&amp;ssl=1 500w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/raspi-config.png?resize=320%2C193&amp;ssl=1 320w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/raspi-config.png?resize=414%2C250&amp;ssl=1 414w, https://i0.wp.com/www.terfes.net/wp/wp-content/uploads/2018/04/raspi-config.png?w=570&amp;ssl=1 570w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<ul>
<li>Change User Passwordでパスワードを変更</li>
<li>Localisation Options→Change Localeでja_JP.UTF-8を指定</li>
<li>Localisation Options→Change TimezoneでAsia→Tokyoを指定</li>
</ul>
<p>ここまでは必須。以下は任意。</p>
<ul>
<li>Overclock→Highに変更</li>
<li>Advanced Options→Expand FilesystemでSDカード全域を利用する（初回起動時に設定されてるぽい）</li>
</ul>
<p>&lt;Finish&gt;を選択すると再起動するか確認されるので、再起動実施。</p>
<h3><span id="toc6">セキュリティ向上作業</span></h3>
<p>最低限のセキュリティを確保するために、初期ユーザーであるpiのユーザー名を切り替えます。</p>
<p>そのままでは、当然変更できないので作業用ユーザ（temp）を作成する。</p>
<pre><code>$ sudo useradd -M temp</code></pre>
<p>そのままでは、<code>sudo</code>コマンドが利用できないので、作業用ユーザをsudoグループに追加し、パスワードを設定して、一度SSHから抜ける。</p>
<pre><code>$ sudo gpasswd -a temp sudo
$ sudo passwd temp
$ exit</code></pre>
<p>今度は、作業用ユーザでログインしてpiを新ユーザ名に変更する。</p>
<pre><code>$ sudo usermod -l [新ユーザ名] pi</code></pre>
<p>その後で、ホームディレクトリも新ユーザ名に合わせて作成し、piからデータを移動させる（でもここまでの作業でホームディレクトリは空なので必要ないかも）</p>
<pre><code>$ sudo usermod -d /home/[新ユーザ名] -m [新ユーザ名]</code></pre>
<p>さらに、piグループも新ユーザ名に変更してログアウト。</p>
<pre><code>$ sudo groupmod -n [新ユーザ名] pi
$ exit</code></pre>
<p>これで、piから新ユーザ名に切り替わったので、新ユーザ名でSSHでログインします。<br />
その上で作業用ユーザを削除します。</p>
<pre><code>$ sudo userdel temp</code></pre>
<p>さらに、rootユーザも有効になっているため、ロックして無効化します（sudoつけるの面倒だけど、セキュリティ上無効にしておきたい）</p>
<pre><code>$ sudo passwd -l root</code></pre>
<p>これで最低限のセキュリティは確保できたはず。</p>
<h2><span id="toc7">秘密鍵を使ってssh接続する＋パスワード入力を省略する</span></h2>
<p>sshの秘密鍵を作ってsshの設定も済ませてしまう。</p>
<h3><span id="toc8">Mac側での作業</span></h3>
<p>Macのターミナルで次のコマンドで鍵を作る。</p>
<pre><code>&gt; ssh-keygen -t rsa</code></pre>
<p>作成する際、次の３つの質問があるが全部Enterキーで空入力する</p>
<pre><code>Generating public/private rsa key pair.
Enter file in which to save the key (/Users/tool-lab/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:</code></pre>
<p>※今回はラズパイ1台だけなのでkeyファイル名はデフォルトのままにしてるだけ。複数台で鍵の使い分けが必要なら１行目のkeyファイル名の指定は必須。</p>
<p>出来上がった<code>.ssh/id_rsa.pub</code>をラズパイへコピー。</p>
<pre><code>&gt; scp .ssh/id_rsa.pub pi@raspberrypi.local:</code></pre>
<h3><span id="toc9">ラズパイ側での作業</span></h3>
<p>ログインして、次のコマンドでkeyファイルを~/.sshディレクトリへ移動と名前を変更する。</p>
<pre><code>$ mkdir .ssh
$ cat id_rsa.pub &gt;&gt; .ssh/authorized_keys</code></pre>
<p>外部からのアクセスを禁止するためパーミッションの変更を実施し、~/id_rsa.pubを削除。</p>
<pre>$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
$ rm id_rsa.pub</pre>
<p>鍵の準備ができたので、sshサーバーの設定を変更するため、/etc/ssh/sshd_configを編集する。</p>
<pre><code>$ sudo nano /etc/ssh/sshd_config</code></pre>
<p>※エディタはviでも<code>emacs</code>でも<code>vim</code>でもご自由に。<code>Raspbian</code>のデフォルトが<code>nano</code>で使いやすいからなだけ。</p>
<p>編集箇所と編集内容は次の通り。<br />
基本的にはコメントアウトされてるので解除してyes/noに変更するだけ。</p>
<pre><code>Port [任意のポート番号(10000〜65535)]
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no</code></pre>
<p>Portは、22番から任意の番号に変更する。<br />
変更後、次のコマンドでsshdの再起動をして変更を反映する。</p>
<pre><code>$ sudo systemctl restart ssh</code></pre>
<p>新しくターミナルを開いて、ログインがうまく行くことを確認する。<br />
うまくいかない時はやり直し。</p>
<h3><span id="toc10">SSHのクライアントのConfigファイルの設定</span></h3>
<p>このままだとSSHを起動する時にオプションやらつけて入力が面倒なのでMacに<code>~/.ssh/config</code>ファイルを作る。内容は次の通り。</p>
<pre><code>Host [任意の名前]
 HostName [ラズパイのIPアドレス]
 User [新ユーザ名]
 Port [ラズパイの/etc/ssh/sshd_config内のPortで指定した番号]
 IdentityFile ~/.ssh/id_rsa</code></pre>
<p>これで、任意の名前でSSHログイン可能になる。</p>
<h2><span id="toc11">DDNSの設定</span></h2>
<p>DDNSには、No-IP.comを利用しました。</p>

<a rel="noopener" target="_blank" href="https://www.noip.com" title="No-IP | Smarter DNS Starts Here
" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Fwww.noip.com?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">No-IP | Smarter DNS Starts Here
</div><div class="blogcard-snippet external-blogcard-snippet">No-IP is a Free Dynamic DNS and Managed DNS provider with 100% uptime. Get free DDNS, plus domain registration and SSL c...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.noip.com" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.noip.com</div></div></div></div></a>
<h3><span id="toc12">DUC（Dynamic Update Client）のインストール</span></h3>
<p>ドメイン名を確保したら、以下のページにある手順でDUCをインストールしてグローバルIPの変更に対応できるようにする。</p>

<a rel="noopener" target="_blank" href="http://www.noip.com/support/knowledgebase/installing-the-linux-dynamic-update-client-on-ubuntu/" title="How to Install the Linux Dynamic Update Client (DUC) | Support | No-IP Knowledge BaseSupport | No-IP Knowledge Base" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/http%3A%2F%2Fwww.noip.com%2Fsupport%2Fknowledgebase%2Finstalling-the-linux-dynamic-update-client-on-ubuntu%2F?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">How to Install the Linux Dynamic Update Client (DUC) | Support | No-IP Knowledge BaseSupport | No-IP Knowledge Base</div><div class="blogcard-snippet external-blogcard-snippet">What is No-IP’s Linux  DUC? No-IP’s Dynamic Update Client for Linux is a lightweight program that keeps a hostname in sy...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.noip.com/support/knowledgebase/install-linux-3-x-dynamic-update-client-duc" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.noip.com</div></div></div></div></a>
<p>実際のコマンドは次の通り。</p>
<pre><code>$ cd /usr/local/src
$ sudo wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
$ sudo tar xzf noip-duc-linux.tar.gz
$ cd noip-2.1.9-1
$ sudo make install</code></pre>
<p>※ディレクトリ名は執筆時当時のものなので確認して実行すること。</p>
<p><code>make install</code>するときにエラーが出るけど、問題がないので無視してOK。<br />
<code>make install</code>を実行したら、No-IP.comのID（メールアドレス）とパスワードを聞かれるので入力。<br />
次に更新間隔を分単位で入力するので、短めの時間（3〜5分）で一度設定。入力しない場合は30分間隔で更新する。</p>
<pre><code>Please enter an update interval:[30]</code></pre>
<p>その後</p>
<pre><code>Do you wish to run something at successful update?[N] (y/N)</code></pre>
<p>と、更新成功時に何か実行するかと聞かれるけど、実行するものもないのでそのままEnter。</p>
<p>終了したら、次のコマンドでDUCを起動して様子見。</p>
<pre><code>$ sudo /usr/local/bin/noip2</code></pre>
<p>指定した時間が過ぎたら、</p>
<pre><code>$ sudo /usr/local/bin/noip2 -S</code></pre>
<p>でIPが取得されているか確認。</p>
<pre><code>$ sudo /usr/local/bin/noip2 -U 30
$ sudo /usr/local/bin/noip2 -S</code></pre>
<p>これを実行して、更新間隔を30分にして、更新間隔が30分になっていることを確認。</p>
<h3><span id="toc13">DUCをサービス登録する</span></h3>
<p>再起動した時に自動的に起動できるよう、サービス登録をする。<br />
ググって見つけてきた<a rel="noopener" target="_blank" href="https://gist.github.com/NathanGiesbrecht/da6560f21e55178bcea7fdd9ca2e39b5">こちら<span class="fa fa-external-link external-icon anchor-icon"></span></a>の設定ファイルを利用。</p>
<pre><code>$ sudo nano /etc/systemd/system/noip2.service</code></pre>
<p>で、コードをコピペして保存したら、コードに記載されているコマンドを実行してサービスに登録→再起動。</p>
<pre><code>$ sudo systemctl enable noip2
$ sudo systemctl start noip2
$ sudo reboot</code></pre>
<p>再起動後に、ちゃんと動いていることを確認しておく。</p>
<pre>$ sudo systemctl status noip2
$ sudo /usr/local/bin/noip2 -S</pre>
<p>後は30日に1回メールが来るはずなので、その都度ログインして更新しておく。</p>
<h2><span id="toc14">参考にしたサイト</span></h2>
<p>以下のページを参考にしました。</p>

<a rel="noopener" target="_blank" href="https://jyn.jp/raspbian-setup/" title="【Buster対応】Raspbianのインストールと最強の初期設定 | なうびるどいんぐ" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/jyn.jp/wp-core/wp-content/uploads/2019/12/raspberry-pi-4-008.jpg?resize=320%2C180&#038;ssl=1" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【Buster対応】Raspbianのインストールと最強の初期設定 | なうびるどいんぐ</div><div class="blogcard-snippet external-blogcard-snippet">Raspberry Piをサーバーにして使うときにやっておきたい設定いろいろ。Raspberry Piで使うDebian系LinuxのRaspbian(Raspberry Pi OS)、セットアップの時にやってる「インストールしたらこれをや...</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://jyn.jp/raspbian-setup/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">jyn.jp</div></div></div></div></a>

<a rel="noopener" target="_blank" href="https://tool-lab.com/2013/11/raspi-key-authentication-over-ssh/" title="Raspberry Piに公開鍵認証を使ってssh接続する | ツール・ラボ" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://s.wordpress.com/mshots/v1/https%3A%2F%2Ftool-lab.com%2F2013%2F11%2Fraspi-key-authentication-over-ssh%2F?w=320&#038;h=180" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">Raspberry Piに公開鍵認証を使ってssh接続する | ツール・ラボ</div><div class="blogcard-snippet external-blogcard-snippet">Raspberry Piに固定IPアドレスを割り当てて、Macのターミナルからssh接続できるようにしました。今回は、もうちょっと安全&amp;簡単に接続できるように設定してみます。 ssh接続時の認証方法 前回までのRaspberry P</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://tool-lab.com/raspi-key-authentication-over-ssh/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">tool-lab.com</div></div></div></div></a>
]]></content:encoded>
					
					<wfw:commentRss>https://www.terfes.net/2018/05/05/post-1433/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1433</post-id>	</item>
	</channel>
</rss>
