<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>takemikami&#39;s note</title>
    <description>読書記録やオリジナル文芸創作（小説、詩、エッセイなど）、IT技術の個人的なノート、 その他にコラムや日記を書き綴っている、takemikami個人運営のブログです。
</description>
    <link>https://takemikami.com/</link>
    <atom:link href="https://takemikami.com/feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Fri, 05 Apr 2024 10:57:52 +0900</pubDate>
    <lastBuildDate>Fri, 05 Apr 2024 10:57:52 +0900</lastBuildDate>
    <generator>Jekyll v3.1.2</generator>
    
      <item>
        <title>Forgejoのデータのバックアップ＆リストア</title>
        <description>&lt;p&gt;以下のエントリでForgejoのバックアップ＆リストア手順を示します。&lt;br&gt;
DatabaseにPostgreSQLを使用した手順になります。&lt;/p&gt;

&lt;p&gt;手動でのバックアップ＆リストア、スクリプト化の順に説明します。&lt;/p&gt;

&lt;p&gt;Forgejoのセットアップ・PostgreSQLの設定は、
以下エントリの手順を想定しています。&lt;/p&gt;

&lt;p&gt;UbuntuLinuxにForgejoをセットアップする手順&lt;br&gt;
&lt;a href=&quot;https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html&quot;&gt;https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ForgejoのDBでPostgreSQLを利用する設定方法&lt;br&gt;
&lt;a href=&quot;https://takemikami.com/2024/03/31/ForgejoDBPostgreSQL.html&quot;&gt;https://takemikami.com/2024/03/31/ForgejoDBPostgreSQL.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;試した環境:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu Linux 22.04.3&lt;/li&gt;
&lt;li&gt;Forgejo 1.21.7&lt;/li&gt;
&lt;li&gt;PostgreSQL 14.11&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;想定環境:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;データディレクトリ: /var/lib/forgejo/data&lt;/li&gt;
&lt;li&gt;PostgreSQLのDB名: forgejo&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;バックアップ&lt;/h1&gt;

&lt;p&gt;手動でのバックアップ手順を示します。&lt;/p&gt;

&lt;p&gt;サービスを停止します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo systemctl stop forgejo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;forgejoユーザになり、バックアップ用のディレクトリを作ります。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo su - forgejo
&lt;span class=&quot;nv&quot;&gt;BACKUP_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;date +%Y%m%d%H%M%S&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;
mkdir -p ~/backup/&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;BACKUP_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ファイルをバックアップします。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; /var/lib/forgejo/data
tar czf ~/backup/&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;BACKUP_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;/forgejo-data.tar.gz ./
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;データベースをバックアップします。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;pg_dump -d forgejo &amp;gt; ~/backup/&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;BACKUP_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;/forgejo-db
gzip ~/backup/&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;BACKUP_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;/forgejo-db
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;参考: 26.1. SQLによるダンプ | PostgreSQL&lt;br&gt;
&lt;a href=&quot;https://www.postgresql.jp/document/14/html/backup-dump.html&quot;&gt;https://www.postgresql.jp/document/14/html/backup-dump.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;サービスを再開します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo systemctl start forgejo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;リストア&lt;/h1&gt;

&lt;p&gt;手動でのリストア手順を示します。&lt;/p&gt;

&lt;p&gt;サービスを停止します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo systemctl stop forgejo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;リストア用のバックアップファイルを特定します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;&lt;span class=&quot;nv&quot;&gt;RESTORE_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;sudo su - forgejo -c &lt;span class=&quot;s2&quot;&gt;&quot;ls ~/backup/ | sort | tail -1&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ファイルをリストアします。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;tar zxf ~/backup/&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;RESTORE_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;/forgejo-data.tar.gz -C /var/lib/forgejo/data
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;データベースを再作成します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo su - postgres -c psql
&lt;span class=&quot;gp&quot;&gt;&amp;gt; &lt;/span&gt;drop database forgejo;
&lt;span class=&quot;gp&quot;&gt;&amp;gt; &lt;/span&gt;CREATE DATABASE forgejo WITH OWNER forgejo TEMPLATE template0 ENCODING UTF8 LC_COLLATE &lt;span class=&quot;s1&quot;&gt;&#39;C.UTF-8&#39;&lt;/span&gt; LC_CTYPE &lt;span class=&quot;s1&quot;&gt;&#39;C.UTF-8&#39;&lt;/span&gt;;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;データベースにデータをロードします。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo su - forgejo
&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; ~/backup/&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;RESTORE_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;
gunzip forgejo-db.gz
psql forgejo &amp;lt; forgejo-db
gzip forgejo-db
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;サービスを再開します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo systemctl start forgejo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;スクリプト化&lt;/h1&gt;

&lt;p&gt;バックアップとリストア処理をスクリプト化します。&lt;/p&gt;

&lt;h2&gt;バックアップスクリプト&lt;/h2&gt;

&lt;p&gt;バックアップ手続きを記載したスクリプトを作成します。&lt;br&gt;
バックアップは３世代分、保存しています。&lt;br&gt;
実運用では、バックアップしたファイル群を、クラウドストレージなど別の場所にもコピーしておくことをおすすめします。&lt;/p&gt;

&lt;p&gt;backup_forgejo.sh&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/bin/sh&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;BACKUP_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;date +%Y%m%d%H%M%S&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;
systemctl stop forgejo
su - forgejo -c &lt;span class=&quot;s2&quot;&gt;&quot;mkdir -p ~/backup/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;BACKUP_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;
  &amp;amp;&amp;amp; cd /var/lib/forgejo/data &amp;amp;&amp;amp; tar czf ~/backup/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;BACKUP_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/forgejo-data.tar.gz ./ &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;
  &amp;amp;&amp;amp; /usr/bin/pg_dump -d forgejo &amp;gt; ~/backup/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;BACKUP_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/forgejo-db &amp;amp;&amp;amp; gzip ~/backup/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;BACKUP_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/forgejo-db &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;
  &amp;amp;&amp;amp; cp ~/custom/conf/app.ini ~/backup/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;BACKUP_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/app.ini &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;
  &amp;amp;&amp;amp; cd ~/backup/ &amp;amp;&amp;amp; ls | sort | head -n -3 | xargs rm -rf&quot;&lt;/span&gt;
systemctl start forgejo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;スクリプトに実行権限を与えて、定期的に実行するようにcrontabに仕込みます。&lt;/p&gt;

&lt;h2&gt;リストアスクリプト&lt;/h2&gt;

&lt;p&gt;リストア手続きをスクリプトにまとめると、以下のようになります。&lt;br&gt;
リストアが必要な時に、これを実行します。&lt;/p&gt;

&lt;p&gt;restore_forgejo.sh&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/bin/sh&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;RESTORE_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;sudo su - forgejo -c &lt;span class=&quot;s2&quot;&gt;&quot;ls ~/backup/ | sort | tail -1&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;read&lt;/span&gt; -p &lt;span class=&quot;s2&quot;&gt;&quot;restore forgejo from &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;RESTORE_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; ok? (y/N): &quot;&lt;/span&gt; yn
&lt;span class=&quot;k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$yn&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;yY]&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;abort.&quot;&lt;/span&gt; ; &lt;span class=&quot;nb&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;esac&lt;/span&gt;

sudo systemctl stop forgejo
sudo su - postgres -c &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;
  psql -c &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;DROP DATABASE forgejo;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;
  &amp;amp;&amp;amp; psql -c &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;CREATE DATABASE forgejo WITH OWNER forgejo TEMPLATE template0 ENCODING UTF8 LC_COLLATE &#39;C.UTF-8&#39; LC_CTYPE &#39;C.UTF-8&#39;;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
sudo su - forgejo -c &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;
  rm -rf /var/lib/forgejo/data/* &amp;amp;&amp;amp; tar zxf ~/backup/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;RESTORE_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/forgejo-data.tar.gz -C /var/lib/forgejo/data &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;
  &amp;amp;&amp;amp; cd ~/backup/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;RESTORE_TIMESTAMP&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &amp;amp;&amp;amp; gunzip forgejo-db.gz &amp;amp;&amp;amp; psql forgejo &amp;lt; forgejo-db &amp;amp;&amp;amp; gzip forgejo-db.gz&quot;&lt;/span&gt;
sudo systemctl start forgejo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;以上。&lt;/p&gt;
</description>
        <pubDate>Thu, 04 Apr 2024 23:49:59 +0900</pubDate>
        <link>https://takemikami.com/2024/04/04/Forgejo.html</link>
        <guid isPermaLink="true">https://takemikami.com/2024/04/04/Forgejo.html</guid>
        
        <category>forgejo</category>
        
        
        <category>IT技術</category>
        
      </item>
    
      <item>
        <title>ForgejoのDBでPostgreSQLを利用する設定方法</title>
        <description>&lt;p&gt;以下のエントリでForgejoのセットアップをしましたが、&lt;br&gt;
Databaseにsqliteを利用していたので、&lt;br&gt;
このエントリではPostgreSQLに変更する手順を示します。&lt;/p&gt;

&lt;p&gt;UbuntuLinuxにForgejoをセットアップする手順
&lt;a href=&quot;https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html&quot;&gt;https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;この手順は、以下の内容を参考にしています。&lt;/p&gt;

&lt;p&gt;PostgreSQL | Database Preparation | Forgejo&lt;br&gt;
&lt;a href=&quot;https://forgejo.org/docs/latest/admin/database-preparation/#postgresql&quot;&gt;https://forgejo.org/docs/latest/admin/database-preparation/#postgresql&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;試した環境:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu Linux 22.04.3&lt;/li&gt;
&lt;li&gt;Forgejo 1.21.7&lt;/li&gt;
&lt;li&gt;PostgreSQL 14.11&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;PostgreSQLのセットアップ&lt;/h1&gt;

&lt;p&gt;PostgreSQLのセットアップをインストールします。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo apt-get install postgresql
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;PostgreSQLのステータスを確認します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo systemctl status postgresql
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;DBの設定 (PostgreSQLにDB/Roleを作成)&lt;/h1&gt;

&lt;p&gt;PostgreSQLにpostgresユーザで接続します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo su - postgres
psql
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;PostgreSQLにデータベースを作成、権限追加を行います。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;CREATE ROLE forgejo WITH LOGIN PASSWORD &lt;span class=&quot;s1&quot;&gt;&#39;{forgejoユーザのパスワード}&#39;&lt;/span&gt;;
CREATE DATABASE forgejo WITH OWNER forgejo TEMPLATE template0 ENCODING UTF8 LC_COLLATE &lt;span class=&quot;s1&quot;&gt;&#39;C.UTF-8&#39;&lt;/span&gt; LC_CTYPE &lt;span class=&quot;s1&quot;&gt;&#39;C.UTF-8&#39;&lt;/span&gt;;
EXIT
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;データベースへの接続を確認します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;psql -U forgejo -d forgejo -h localhost
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Forgejoの設定 (ForgejoからPostgreSQLを参照する設定)&lt;/h1&gt;

&lt;p&gt;Forgejoの設定ファイルを開き、&lt;br&gt;
databaseの接続先をpostgresqlに変更します。&lt;/p&gt;

&lt;p&gt;custom/conf/app.ini の変更点&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ini&quot; data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;nn&quot;&gt;[database]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;DB_TYPE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;postgres&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;HOST&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;127.0.0.1:5432&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;NAME&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;forgejo&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;USER&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;forgejo&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;PASSWD&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;`{forgejoユーザのパスワード}`&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;SCHEMA&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;SSL_MODE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;disable&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;LOG_SQL&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;falsee&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ここでは、既存のデータをすべて削除することにします。&lt;br&gt;
既存データが必要な場合は、事前にバックアップを取っておいてください。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;rm -rf /var/lib/forgejo/data/&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;設定ファイルを修正したら、forgejoを再起動し反映します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo systemctl restart forgejo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ここでは、データは全て削除しているので、&lt;br&gt;
管理者ユーザの登録から実施します。&lt;br&gt;
その後、PostgreSQLに、&lt;br&gt;
Forgejo関連のテーブルが作成されているのを確認しておきます。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;psql -U forgejo -d forgejo -h localhost
&lt;span class=&quot;gp&quot;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;select&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; from pg_tables where &lt;span class=&quot;nv&quot;&gt;tableowner&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&#39;forgejo&#39;&lt;/span&gt;;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;以上。&lt;/p&gt;
</description>
        <pubDate>Sun, 31 Mar 2024 03:57:35 +0900</pubDate>
        <link>https://takemikami.com/2024/03/31/ForgejoDBPostgreSQL.html</link>
        <guid isPermaLink="true">https://takemikami.com/2024/03/31/ForgejoDBPostgreSQL.html</guid>
        
        <category>forgejo</category>
        
        
        <category>IT技術</category>
        
      </item>
    
      <item>
        <title>インターネットに接続できない環境でtiktokenを使う</title>
        <description>&lt;p&gt;tiktokenで文字列をエンコードする時、&lt;br&gt;
vocabulary定義をダウンロードするため、&lt;br&gt;
インターネットに接続できない環境では、事前にダウンロードが必要になる。&lt;br&gt;
このエントリでは、その手順を示す。&lt;/p&gt;

&lt;p&gt;tiktoken | GitHub&lt;br&gt;
&lt;a href=&quot;https://github.com/openai/tiktoken&quot;&gt;https://github.com/openai/tiktoken&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;該当のダウンロード処理は、次のコードに記載されている。&lt;br&gt;
&lt;a href=&quot;https://github.com/openai/tiktoken/blob/main/tiktoken_ext/openai_public.py&quot;&gt;https://github.com/openai/tiktoken/blob/main/tiktoken_ext/openai_public.py&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;事前のダウンロード&lt;/h1&gt;

&lt;p&gt;事前にインターネットに接続できる環境で、&lt;br&gt;
tiktokenの処理を呼び出し、vocabulary定義をダウンロードする。&lt;/p&gt;

&lt;p&gt;環境変数 &lt;code&gt;TIKTOKEN_CACHE_DIR&lt;/code&gt; に指定したパスにキャッシュが保存されるので、&lt;br&gt;
環境変数を指定してダウンロード処理を呼ぶコードを実行する。&lt;/p&gt;

&lt;p&gt;download.py&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;tiktoken_ext.openai_public&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;os&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;environ&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;TIKTOKEN_CACHE_DIR&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;cache/&quot;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;f&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tiktoken_ext&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;openai_public&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ENCODING_CONSTRUCTORS&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;items&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;():&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;実行コマンド&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;python download.py
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ここでは &lt;code&gt;cache/&lt;/code&gt; 配下にキャッシュが保存されることを確認できる。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;&lt;span class=&quot;gp&quot;&gt;$ &lt;/span&gt;ls  cache/
0ea1e91bbb3a60f729a8dc8f777fd2fc07cd8df4
6c7ea1a7e38e3a7f062df639a5b80947f075ffe6
6d1cbeee0f20b3d9449abfede4726ed8212e3aee
9b5ad71b2ce5302211f9c61530b329a4922fc6a4
ec7223a39ce59f226a68acc30dc1af2788490e15
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;cache配下をアーカイブしておく。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;tar czf cache.tar.gz cache/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;キャッシュアーカイブの展開、処理の実行&lt;/h1&gt;

&lt;p&gt;インターネットに接続できない環境に &lt;code&gt;cache.tar.gz&lt;/code&gt; をコピーし展開する。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;tar zxf cache.tar.gz
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;この状態であれば、インターネットに接続できない環境でも、&lt;br&gt;
tiktokenを利用するコードを実行できる。&lt;/p&gt;

&lt;p&gt;main.py&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;tiktoken&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;os&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;environ&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;TIKTOKEN_CACHE_DIR&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;cache/&quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;encoding&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tiktoken&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get_encoding&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;cl100k_base&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;tokens&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;encoding&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;起立！気をつけ！こんにちは&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tokens&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;実行コマンド&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;&lt;span class=&quot;gp&quot;&gt;$ &lt;/span&gt;python main.py
&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;72718, 80195, 6447, 95221, 30512, 59739, 76622, 6447, 90115]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;以上。&lt;/p&gt;
</description>
        <pubDate>Wed, 27 Mar 2024 21:46:15 +0900</pubDate>
        <link>https://takemikami.com/2024/03/27/tiktoken.html</link>
        <guid isPermaLink="true">https://takemikami.com/2024/03/27/tiktoken.html</guid>
        
        
        <category>IT技術</category>
        
      </item>
    
      <item>
        <title>Forgejo Runnerでsetup-pythonを動かした手順メモ</title>
        <description>&lt;p&gt;このエントリでは、&lt;br&gt;
Forgejo Runnerでsetup-pythonを動かしたメモを残しておきます。&lt;/p&gt;

&lt;p&gt;Forgejo/Runner自体のセットアップ関連は、過去のエントリを参照ください。&lt;/p&gt;

&lt;p&gt;UbuntuLinuxにForgejoをセットアップする手順&lt;br&gt;
&lt;a href=&quot;https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html&quot;&gt;https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;Workflowの変更&lt;/h1&gt;

&lt;p&gt;GitHub Actionsで、&lt;br&gt;
setup-pythonを動かす場合は次のようにWorkflowを記載します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;s&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pi&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;jobs&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;s&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;runs-on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;steps&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;actions/setup-python@v5&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;s&quot;&gt;python-version&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&#39;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;3.11&#39;&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;python --version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Forgejoの場合、&lt;code&gt;uses&lt;/code&gt;で指定したactionsは、&lt;br&gt;
&lt;code&gt;code.forgejo.org&lt;/code&gt;のリポジトリをさすので、&lt;br&gt;
GitHubを参照するよう、以下の通り変更します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;s&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pi&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;jobs&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;s&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;runs-on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;steps&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;https://github.com/actions/setup-python@v5&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
          &lt;span class=&quot;s&quot;&gt;python-version&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&#39;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;3.11&#39;&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;python --version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Nodejsのインストール&lt;/h1&gt;

&lt;p&gt;Forgejo Runnerからactionsを動かすためにNodejsが必要なため、&lt;br&gt;
インストールしておきます。&lt;/p&gt;

&lt;p&gt;Utunbu22標準の状態でaptからインストールされる12系のNodejsでは、&lt;br&gt;
setup-pythonが動かないようなので、&lt;br&gt;
以下のサイトなどを参照して、20.x系のNodejsをインストールします。&lt;/p&gt;

&lt;p&gt;Welcome to Node.js DEB repository&lt;br&gt;
&lt;a href=&quot;https://deb.nodesource.com/&quot;&gt;https://deb.nodesource.com/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;OSの情報が取得できない問題の対処&lt;/h1&gt;

&lt;p&gt;ここまでの準備を行った状態でActionを動かしたところ、以下のようなエラーが発生しました。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;::error::The version &#39;3.11&#39; with architecture &#39;x64&#39; was not found for this operating system.%0AThe list of all available versions can be found here: https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;setup-pythonのコードを読んで確認したところ、&lt;br&gt;
OSの情報が取得できていないことが原因ようです。&lt;br&gt;
そこで&lt;code&gt;lsb_release&lt;/code&gt;を実行すると、以下のようになっています。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;&lt;span class=&quot;gp&quot;&gt;$ &lt;/span&gt;lsb_release
No LSB modules are available.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;lsb_release&lt;/code&gt;でOSの情報が取得できるよう、lsb-coreをインストールします。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo apt install lsb-core
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;インストール後、再度&lt;code&gt;lsb_release&lt;/code&gt;を実行してOSの情報が取得できることを確認します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;&lt;span class=&quot;gp&quot;&gt;$ &lt;/span&gt;lsb_release -i -r -s
Ubuntu
22.04
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;この状態で、Actionを再実行するとPythonがセットアップできます。&lt;/p&gt;

&lt;p&gt;以上。&lt;/p&gt;
</description>
        <pubDate>Mon, 25 Mar 2024 23:06:52 +0900</pubDate>
        <link>https://takemikami.com/2024/03/25/Forgejo-Runnersetuppython.html</link>
        <guid isPermaLink="true">https://takemikami.com/2024/03/25/Forgejo-Runnersetuppython.html</guid>
        
        <category>forgejo</category>
        
        
        <category>IT技術</category>
        
      </item>
    
      <item>
        <title>Forgejoでpandocを使ってdocxを表示する設定方法</title>
        <description>&lt;p&gt;このエントリでは、&lt;br&gt;
Forgejoでpandocを使ってdocxを表示する設定方法を示します。&lt;br&gt;
また、あわせてDiffの確認できるように設定します。&lt;/p&gt;

&lt;p&gt;Forgejoのセットアップ関連は、過去のエントリを参照ください。&lt;/p&gt;

&lt;p&gt;UbuntuLinuxにForgejoをセットアップする手順&lt;br&gt;
&lt;a href=&quot;https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html&quot;&gt;https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ForgejoでJupyteNotebook(ipynb)を表示する設定方法&lt;br&gt;
&lt;a href=&quot;https://takemikami.com/2024/03/23/ForgejoJupyteNotebookipynb.html&quot;&gt;https://takemikami.com/2024/03/23/ForgejoJupyteNotebookipynb.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;試した環境:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu Linux 22.04.3&lt;/li&gt;
&lt;li&gt;Forgejo 1.21.7&lt;/li&gt;
&lt;li&gt;pandoc 3.1.12.3&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;pandocのセットアップ&lt;/h1&gt;

&lt;p&gt;Forgejoでdocxを表示するためには、&lt;br&gt;
docx→html変換が必要なので、pandocをインストールします。&lt;/p&gt;

&lt;p&gt;以下コマンドでpandocをインストールします。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;wget https://github.com/jgm/pandoc/releases/download/3.1.12.3/pandoc-3.1.12.3-linux-amd64.tar.gz
sudo tar zxf pandoc-3.1.12.3-linux-amd64.tar.gz -C /opt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;# aptでインストールしたversionは、&lt;br&gt;
# &lt;code&gt;--embed-resources&lt;/code&gt;オプションが使えなかったので、手動で入れてます&lt;/p&gt;

&lt;h1&gt;Forgejoにrender commandを設定&lt;/h1&gt;

&lt;p&gt;Forgejoの設定ファイルに、&lt;br&gt;
ipynvのrender commandにpandocを指定します。&lt;/p&gt;

&lt;p&gt;custom/conf/app.ini への追記内容&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ini&quot; data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;nn&quot;&gt;[markup.docx]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;ENABLED&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;FILE_EXTENSIONS&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;.docx&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;RENDER_COMMAND&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;/opt/pandoc-3.1.12.3/bin/pandoc --embed-resources --from=docx --to=html &quot;&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;IS_INPUT_FILE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;RENDER_CONTENT_MODE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;no-sanitizer&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;設定ファイルを修正したら、forgejoを再起動し反映します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo systemctl restart forgejo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ブラウザからForgejoでdocxファイルを開くと、ファイル内容が表示されます。  &lt;/p&gt;

&lt;h1&gt;Diff用のgit設定&lt;/h1&gt;

&lt;p&gt;Forgejoから呼び出しているgit diffの結果をテキストに変換すれば、&lt;br&gt;
Diff表示画面に差分が表示されるようになるので、&lt;br&gt;
git diffのtextconvでpandocを呼ぶように変更します。&lt;/p&gt;

&lt;p&gt;Forgejoから利用するgitの設定については、以下を参考にします。&lt;/p&gt;

&lt;p&gt;Git - Config options (git.config) | Configuration Cheat Sheet | Forgejo&lt;br&gt;
&lt;a href=&quot;https://forgejo.org/docs/latest/admin/config-cheat-sheet/#git---config-options-gitconfig&quot;&gt;https://forgejo.org/docs/latest/admin/config-cheat-sheet/#git---config-options-gitconfig&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Forgejoの実行ユーザの&lt;code&gt;git/attributes&lt;/code&gt;設定を、以下のように指定します。&lt;/p&gt;

&lt;p&gt;~/.config/git/attributes&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;*.docx diff=wordx
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;次のように、&lt;code&gt;custom/conf/app.ini&lt;/code&gt;にgitconfigの設定を追記します。&lt;br&gt;
ここではattributeファイルのパス、textconvにpandocの呼び出しを指定しています。&lt;/p&gt;

&lt;p&gt;custom/conf/app.ini への追記内容&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ini&quot; data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;nn&quot;&gt;[git.config]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;core.attributesFile&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;/var/lib/forgejo/.config/git/attributes&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;diff.wordx.textconv&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;/opt/pandoc-3.1.12.3/bin/pandoc --from=docx --to=markdown&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;※ここではforgejoのホームディレクトリは&lt;code&gt;/var/lib/forgejo&lt;/code&gt;としています。&lt;/p&gt;

&lt;p&gt;ブラウザからForgejoでdocxの差分表示をすると、&lt;br&gt;
次のようなイメージで差分が表示されます。  &lt;/p&gt;

&lt;p&gt;差分の表示イメージ&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://lh3.googleusercontent.com/pw/AP1GczPx1O7QyAPGrO-pBcZYCm5PoULWWmhFlJQbKahFj5rHPsrGhElwmx-MAhuoVIFp-ftDXx1muhoW2oz7mjbSOTY4J4O84X5ENSdXZ3EyJgEeQ6WFrDPyb81acKHZEPdRU0BeeNf8v5yxVOJdbdaEa76wsg=w1106-h286-s-no-gm&quot; alt=&quot;forgejo-diff&quot;&gt;&lt;/p&gt;

&lt;p&gt;この方法では、差分の前後を表示しようとすると、&lt;br&gt;
(git diffの差分表示ではないので)&lt;br&gt;
バイナリファイルがそのまま表示されてしまう問題はありますが。&lt;/p&gt;

&lt;p&gt;以上。&lt;/p&gt;
</description>
        <pubDate>Sun, 24 Mar 2024 01:48:57 +0900</pubDate>
        <link>https://takemikami.com/2024/03/24/Forgejopandocdocx.html</link>
        <guid isPermaLink="true">https://takemikami.com/2024/03/24/Forgejopandocdocx.html</guid>
        
        <category>forgejo</category>
        
        
        <category>IT技術</category>
        
      </item>
    
      <item>
        <title>ForgejoでJupyteNotebook(ipynb)を表示する設定方法</title>
        <description>&lt;p&gt;このエントリでは、&lt;br&gt;
ForgejoでJupyteNotebook(ipynb)を表示する設定方法を示します。  &lt;/p&gt;

&lt;p&gt;本エントリは、以下の記事を参考にしています。&lt;/p&gt;

&lt;p&gt;How to render Jupyter Notebooks on Gitea | Gitea&lt;br&gt;
&lt;a href=&quot;https://blog.gitea.com/render-jupyter-notebooks/&quot;&gt;https://blog.gitea.com/render-jupyter-notebooks/&lt;/a&gt;&lt;br&gt;
※Giteaの記事ですが、Forgejoもほぼ同じ。&lt;/p&gt;

&lt;p&gt;Forgejoのセットアップは、過去のエントリを参照ください。&lt;/p&gt;

&lt;p&gt;UbuntuLinuxにForgejoをセットアップする手順&lt;br&gt;
&lt;a href=&quot;https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html&quot;&gt;https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;試した環境:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu Linux 22.04.3&lt;/li&gt;
&lt;li&gt;Forgejo 1.21.7&lt;/li&gt;
&lt;li&gt;jupyter_core 5.7.2&lt;/li&gt;
&lt;li&gt;nbconvert 7.16.3&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;jupyter-nbconvertのセットアップ&lt;/h1&gt;

&lt;p&gt;Forgejoでipynbを表示するためには、&lt;br&gt;
ipynb→html変換が必要なので、jupyter-nbconvertをインストールします。&lt;/p&gt;

&lt;p&gt;以下コマンドでpython/pipをインストールします。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo apt install python3
sudo apt install python3-pip
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;以下のコマンドで、&lt;br&gt;
forgejoの実行ユーザに、jupyter-nbconvertをインストールします。&lt;br&gt;
※ここではforgejoの実行ユーザはforgejoとしています。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo su - forgejo
pip3 install nbconvert
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Forgejoにrender commandを設定&lt;/h1&gt;

&lt;p&gt;以下のドキュメントを参考に、render commandを設定します。&lt;/p&gt;

&lt;p&gt;Markup (markup) | Forgejo&lt;br&gt;
&lt;a href=&quot;https://forgejo.org/docs/latest/admin/config-cheat-sheet/#markup-markup&quot;&gt;https://forgejo.org/docs/latest/admin/config-cheat-sheet/#markup-markup&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Forgejoの設定ファイルに、&lt;br&gt;
ipynvのrender commandにjupyter nbconverを指定します。&lt;/p&gt;

&lt;p&gt;custom/conf/app.ini への追記内容&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ini&quot; data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;nn&quot;&gt;[markup.jupyter]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;ENABLED&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;FILE_EXTENSIONS&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;.ipynb&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;RENDER_COMMAND&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;/var/lib/forgejo/.local/bin/jupyter nbconvert --stdout --to html --template basic &quot;&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;IS_INPUT_FILE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;true&lt;/span&gt;

&lt;span class=&quot;nn&quot;&gt;[markup.sanitizer.jupyter0]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;ELEMENT&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;div&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;ALLOW_ATTR&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;class&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;REGEXP&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;※ここではforgejoのホームディレクトリは&lt;code&gt;/var/lib/forgejo&lt;/code&gt;としています。&lt;/p&gt;

&lt;p&gt;設定ファイルを修正したら、forgejoを再起動し反映します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo systemctl restart forgejo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ブラウザからForgejoでipynbファイルを開くと、&lt;br&gt;
JupyterNotebookで表示されるのと同じように表示されます。&lt;br&gt;
この段階では、未だスタイルシートが適用されていない状態です。&lt;/p&gt;

&lt;h1&gt;スタイルシートの適用&lt;/h1&gt;

&lt;p&gt;以下のドキュメントを参考に、ForgejoのHTMLをカスタマイズします。&lt;/p&gt;

&lt;p&gt;Other additions to the page | Forgejo&lt;br&gt;
&lt;a href=&quot;https://forgejo.org/docs/latest/developer/customization/#other-additions-to-the-page&quot;&gt;https://forgejo.org/docs/latest/developer/customization/#other-additions-to-the-page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;HTMLヘッダーに追加する内容をとして、以下のファイルを追加します。&lt;br&gt;
このヘッダーからipynbに適用するスタイルシートを読み込みます。&lt;/p&gt;

&lt;p&gt;custom/templates/custom/header.tmpl&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-html&quot; data-lang=&quot;html&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;link&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;rel=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;stylesheet/less&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;type=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;text/css&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;href=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/assets/css/jupyter.less&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;//cdn.jsdelivr.net/npm/less&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;nbconvertで、使っているテンプレート・スタイルシートは次を参考にします。&lt;/p&gt;

&lt;p&gt;Creating Custom Templates for nbconvert | nbconvert&lt;br&gt;
&lt;a href=&quot;https://nbconvert.readthedocs.io/en/v7.16.3/customizing.html&quot;&gt;https://nbconvert.readthedocs.io/en/v7.16.3/customizing.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;以下のコマンドで、&lt;br&gt;
先ほどのヘッダーから読み込む、CSSファイルを追加します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;.jupyter {&quot;&lt;/span&gt; &amp;gt; custom/public/assets/css/jupyter.less
cat ~/.local/share/jupyter/nbconvert/templates/classic/static/style.css &amp;gt;&amp;gt; custom/public/assets/css/jupyter.less
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;}&quot;&lt;/span&gt; &amp;gt;&amp;gt; custom/public/assets/css/jupyter.less
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;この後、ブラウザからForgejoでipynbファイルを開くと、&lt;br&gt;
スタイルシートが適用された状態で、&lt;br&gt;
JupyterNotebookで表示されるのと同じように表示されます。&lt;/p&gt;

&lt;p&gt;以上。&lt;/p&gt;
</description>
        <pubDate>Sat, 23 Mar 2024 22:26:47 +0900</pubDate>
        <link>https://takemikami.com/2024/03/23/ForgejoJupyteNotebookipynb.html</link>
        <guid isPermaLink="true">https://takemikami.com/2024/03/23/ForgejoJupyteNotebookipynb.html</guid>
        
        <category>forgejo</category>
        
        
        <category>IT技術</category>
        
      </item>
    
      <item>
        <title>AWS CloudFormationのテンプレートからパラメータシート生成の検討</title>
        <description>&lt;p&gt;このエントリでは、&lt;br&gt;
AWS CloudFormationのテンプレートからパラメータシートを生成して、&lt;br&gt;
実装とパラメータ設計の乖離を防ぐように運用する対応を検討します。&lt;/p&gt;

&lt;p&gt;テンプレートからパラメータ生成は次のツールがありますが、&lt;br&gt;
フォーマット等をカスタマイズしたいニーズもあると思うので、&lt;br&gt;
このエントリでは自前で実装することにします。&lt;/p&gt;

&lt;p&gt;cfn-docgen - AWS CloudFormationテンプレートからドキュメントを自動生成するツールを公開しました | Qiita&lt;br&gt;
&lt;a href=&quot;https://qiita.com/horietakehiro/items/359ae6e9cb40fef50604&quot;&gt;https://qiita.com/horietakehiro/items/359ae6e9cb40fef50604&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;実装と利用方法&lt;/h1&gt;

&lt;p&gt;Resourcesの部分だけ出力するものを実装してみました。&lt;br&gt;
実装としては、次の&lt;code&gt;gen_cfn_docs.py&lt;/code&gt;と&lt;code&gt;spec_md.jinja&lt;/code&gt;の通りです。&lt;br&gt;
出力形式をカスタマイズしたい場合は、&lt;code&gt;spec_md.jinja&lt;/code&gt;を変更します。&lt;/p&gt;

&lt;p&gt;gen_cfn_docs.py&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sys&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;yaml&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;jinja2&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Environment&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;awscli.customizations.cloudformation.yamlhelper&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;yaml_parse&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;generate_doc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;input_yaml&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;template_jinja&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;input_yaml&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;data&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;yaml_parse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fp&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;())&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;template_jinja&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;tpl_str&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fp&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;template&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Environment&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;from_string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;source&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tpl_str&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;template&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;render&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;resources&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Resources&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]))&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;__name__&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;__main__&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;argv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;usage: python gen_cfn_docs.py [input(yaml)] [template(jinja)]&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;nb&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;input&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;argv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;template&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;argv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;generate_doc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;input&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;template&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;spec_md.jinja&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;{% for re, rv in resources.items() %}

## {{ re }} ({{ rv[&quot;Type&quot;] }})
{% for pe, pv in rv[&quot;Properties&quot;].items() %}
- {{ pe }}{% if pv.__class__.__name__ != &#39;list&#39; %}: {{ pv }}{% endif %}
{% if pv.__class__.__name__ == &#39;list&#39; %}{% for sr in rv[&quot;Properties&quot;][pe] %}
  - {% for spe, spv in sr.items() %}
      {{ spe }}: {{ spv }}
    {% endfor %}
{% endfor %}{% endif %}
{% endfor %}
{% endfor %}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;PyYaml, awscli, jinja2に依存するのでインスト－ルします。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;pip install PyYAML
pip install awscli
pip install Jinja2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;実行方法は次の通りです。&lt;br&gt;
&lt;code&gt;target.yaml&lt;/code&gt;の部分に、CloudFormationのテンプレートファイルを指定します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;python gen_cfn_docs.py target.yaml spec_md.jinja &amp;gt; spec.md
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;未実装な点など&lt;/h1&gt;

&lt;p&gt;最低限という感じで作ってみたので、まだまだ実装すべき点はあると思います。&lt;br&gt;
例えば、以下のような点です。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resourcesのみ実装しているので、Parameterなどは必要に応じて変更が必要&lt;/li&gt;
&lt;li&gt;Fn::Sub, Ref等の出力は、Jinja2のフィルタなども実装した方が良い&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;このエントリでは、この程度の生成は簡単にできると言うことが伝われば十分かなと。。&lt;/p&gt;

&lt;p&gt;以下のエントリを参考にさせて頂きました、ありがとうございます。&lt;/p&gt;

&lt;p&gt;【小ネタ】PythonでCloudFormationテンプレートをパースする時に組み込み関数の短縮系構文に邪魔されない方法 | DevelopersIO&lt;br&gt;
&lt;a href=&quot;https://dev.classmethod.jp/articles/dynamolocal-from-cfn/&quot;&gt;https://dev.classmethod.jp/articles/dynamolocal-from-cfn/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;以上。&lt;/p&gt;
</description>
        <pubDate>Wed, 20 Mar 2024 20:50:58 +0900</pubDate>
        <link>https://takemikami.com/2024/03/20/AWS-CloudFormation.html</link>
        <guid isPermaLink="true">https://takemikami.com/2024/03/20/AWS-CloudFormation.html</guid>
        
        <category>cloudformation</category>
        
        
        <category>IT技術</category>
        
      </item>
    
      <item>
        <title>UbuntuLinuxにMLflowをセットアップする手順</title>
        <description>&lt;p&gt;このエントリでは、&lt;br&gt;
UbuntuLinuxにMLflowをセットアップする手順を示します。  &lt;/p&gt;

&lt;p&gt;MLflow&lt;br&gt;
&lt;a href=&quot;https://mlflow.org/&quot;&gt;https://mlflow.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;試した環境:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu Linux 22.04.3&lt;/li&gt;
&lt;li&gt;MLflow 2.11.1&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;MLflowのセットアップ&lt;/h1&gt;

&lt;p&gt;以下の手順に従って、MLflowをセットアップします。&lt;/p&gt;

&lt;p&gt;5 Minute Tracking Server Overview | MLflow&lt;br&gt;
&lt;a href=&quot;https://mlflow.org/docs/latest/getting-started/tracking-server-overview/index.html&quot;&gt;https://mlflow.org/docs/latest/getting-started/tracking-server-overview/index.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;以下コマンドの通り、ユーザ・ディレクトリを用意します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo useradd mlflow -d /var/lib/mlflow
sudo mkdir /var/lib/mlflow
sudo chown mlflow:mlflow /var/lib/mlflow
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pythonの仮想環境を作成し、MLflowをインストールします。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo su - mlflow
&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; ~
python3 -m venv venv
. venv/bin/activate
pip install mlflow
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;インストールできたかを、確認しておきます。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;mlflow --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;systemdでのサービス化&lt;/h1&gt;

&lt;p&gt;管理しやすくするためsystemdでサービス化します。&lt;br&gt;
次の設定ファイルを作ります。&lt;/p&gt;

&lt;p&gt;/etc/systemd/system/mlflow.service&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ini&quot; data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;nn&quot;&gt;[Unit]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Description&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;MLflow&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;After&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;syslog.target&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;After&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;network.target&lt;/span&gt;

&lt;span class=&quot;nn&quot;&gt;[Service]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;RestartSec&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;2s&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Type&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;simple&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;User&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;mlflow&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Group&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;mlflow&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;WorkingDirectory&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;~&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;ExecStart&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;/var/lib/mlflow/venv/bin/mlflow server --host 0.0.0.0 --port 5000 --backend-store-uri /var/lib/mlflow/.mlflow&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Restart&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;always&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Environment&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;VIRTUAL_ENV=/var/lib/mlflow/venv&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Environment&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;PATH=/var/lib/mlflow/venv/bin&lt;/span&gt;

&lt;span class=&quot;nn&quot;&gt;[Install]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;WantedBy&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;multi-user.target&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;設定をリロード、サービスを開始します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo systemctl daemon-reload
sudo systemctl &lt;span class=&quot;nb&quot;&gt;enable &lt;/span&gt;mlflow
sudo systemctl start mlflow
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;サービスを実行しているホストの5000番ポートにブラウザでアクセスすると、&lt;br&gt;
MLflowの画面が表示されます。&lt;/p&gt;

&lt;p&gt;以上。&lt;/p&gt;
</description>
        <pubDate>Tue, 19 Mar 2024 22:01:40 +0900</pubDate>
        <link>https://takemikami.com/2024/03/19/UbuntuLinuxMLflow.html</link>
        <guid isPermaLink="true">https://takemikami.com/2024/03/19/UbuntuLinuxMLflow.html</guid>
        
        <category>mlflow</category>
        
        
        <category>IT技術</category>
        
      </item>
    
      <item>
        <title>UbuntuLinuxにForgejoをセットアップする手順</title>
        <description>&lt;p&gt;このエントリでは、&lt;br&gt;
UbuntuLinuxにForgejoをセットアップする手順を示します。&lt;br&gt;
CI/CDを動かすため、Forgejo runnerもセットアップします。&lt;/p&gt;

&lt;p&gt;Forgejo&lt;br&gt;
&lt;a href=&quot;https://forgejo.org/&quot;&gt;https://forgejo.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Forgejo Actions administrator guide | Forgejo&lt;br&gt;
&lt;a href=&quot;https://forgejo.org/docs/next/admin/actions/&quot;&gt;https://forgejo.org/docs/next/admin/actions/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;試した環境:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu Linux 22.04.3&lt;/li&gt;
&lt;li&gt;Forgejo 1.21.7&lt;/li&gt;
&lt;li&gt;Forgejo runner 3.3.0&lt;/li&gt;
&lt;li&gt;git 2.34.1&lt;/li&gt;
&lt;li&gt;Docker 25.0.4&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;Gitのセットアップ&lt;/h1&gt;

&lt;p&gt;ForgejoにはGitが必要なので、&lt;br&gt;
以下コマンドでインストールしておきます。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo apt install git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;インストールできたかを、確認しておきます。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;git --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Forgejoのセットアップ&lt;/h1&gt;

&lt;p&gt;以下の手順に従って、Forgejoをセットアップします。&lt;/p&gt;

&lt;p&gt;Get Forgejo | Forgejo&lt;br&gt;
&lt;a href=&quot;https://forgejo.org/download/&quot;&gt;https://forgejo.org/download/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;以下コマンドの通り、ユーザ・ディレクトリを用意します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo useradd forgejo -d /var/lib/forgejo
sudo mkdir /var/lib/forgejo
sudo chown forgejo:forgejo /var/lib/forgejo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;バイナリをダウンロード、GPG signatureの検証を行います。&lt;br&gt;
（実際には、公式ドキュメントを参照して最新Versionで実施するのが良いと思います）&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;wget https://codeberg.org/forgejo/forgejo/releases/download/v1.21.7-0/forgejo-1.21.7-0-linux-amd64
gpg --keyserver keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710
wget https://codeberg.org/forgejo/forgejo/releases/download/v1.21.7-0/forgejo-1.21.7-0-linux-amd64.asc
gpg --verify forgejo-1.21.7-0-linux-amd64.asc forgejo-1.21.7-0-linux-amd64
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ダウンロードしたバイナリのユーザ・実行権限を設定、/var/lib/forgejoに配置します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo mv forgejo-1.21.7-0-linux-amd64 /var/lib/forgejo/forgejo
sudo chown forgejo:forgejo /var/lib/forgejo/forgejo
sudo chmod 744 /var/lib/forgejo/forgejo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Forgejoを起動します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo su - forgejo bash -c &lt;span class=&quot;s2&quot;&gt;&quot;/var/lib/forgejo/forgejo web&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;起動したホストの3000番ポートにブラウザでアクセスすると、&lt;br&gt;
初期設定が表示されるので、各項目を指定して初期設定を行います。&lt;/p&gt;

&lt;p&gt;ここでは、データベースのタイプを「SQLite3」に変更して、&lt;br&gt;
「Forgejoをインストール」をクリックします。&lt;/p&gt;

&lt;p&gt;ここまでの手順を終えると、Forgejoの基本的な機能が使えるようになります。&lt;/p&gt;

&lt;p&gt;最初に登録したユーザが管理者になるので、ユーザを登録しておきます。&lt;/p&gt;

&lt;h1&gt;Dockerのセットアップ&lt;/h1&gt;

&lt;p&gt;Forgejo runnerにはDockerが必要なので、&lt;br&gt;
以下の手順に従ってインストールしておきます。&lt;/p&gt;

&lt;p&gt;Install Docker Engine on Ubuntu | docker docs&lt;br&gt;
&lt;a href=&quot;https://docs.docker.com/engine/install/ubuntu/&quot;&gt;https://docs.docker.com/engine/install/ubuntu/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;以下コマンドでDokcerのリポジトリを準備します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
  &lt;span class=&quot;s2&quot;&gt;&quot;deb [arch=&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;dpkg --print-architecture&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;$(&lt;/span&gt;. /etc/os-release &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$VERSION_CODENAME&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; stable&quot;&lt;/span&gt; | &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
  sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;以下コマンドでDokcerをインストールします。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;インストールできたかを、確認しておきます。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;docker --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Forgejo runnerのセットアップ&lt;/h1&gt;

&lt;p&gt;以下に、Forgejo runnerの管理ガイドがあります。&lt;/p&gt;

&lt;p&gt;Forgejo Actions administrator guide | Forgejo&lt;br&gt;
&lt;a href=&quot;https://forgejo.org/docs/latest/admin/actions/&quot;&gt;https://forgejo.org/docs/latest/admin/actions/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;管理ガイドの次の箇所に手順があるので、&lt;br&gt;
これに従ってForgejo runnerをセットアップします。&lt;/p&gt;

&lt;p&gt;Installation | Forgejo Actions administrator guide | Forgejo&lt;br&gt;
&lt;a href=&quot;https://forgejo.org/docs/latest/admin/actions/#installation&quot;&gt;https://forgejo.org/docs/latest/admin/actions/#installation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;以下コマンドの通り、ユーザ・ディレクトリを用意します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo useradd forgejo-runner -d /var/lib/forgejo-runner
sudo mkdir /var/lib/forgejo-runner
sudo chown forgejo-runner:forgejo-runner /var/lib/forgejo-runner
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Dockerを利用できるように、dockerグループに所属させておきます。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo usermod -aG docker forgejo-runner
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;バイナリをダウンロード、GPG signatureの検証を行います。&lt;br&gt;
（実際には、公式ドキュメントを参照して最新Versionで実施するのが良いと思います）&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;wget -O forgejo-runner https://code.forgejo.org/forgejo/runner/releases/download/v3.3.0/forgejo-runner-3.3.0-linux-amd64
wget -O forgejo-runner.asc https://code.forgejo.org/forgejo/runner/releases/download/v3.3.0/forgejo-runner-3.3.0-linux-amd64.asc
gpg --keyserver keys.openpgp.org --recv EB114F5E6C0DC2BCDD183550A4B61A2DC5923710
gpg --verify forgejo-runner.asc forgejo-runner
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ダウンロードしたバイナリのユーザ・実行権限を設定、/var/lib/forgejo-runnerに配置します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo mv forgejo-runner /var/lib/forgejo-runner/forgejo-runner
sudo chown forgejo-runner:forgejo-runner /var/lib/forgejo-runner/forgejo-runner
sudo chmod 744 /var/lib/forgejo-runner/forgejo-runner
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Forgejoにランナーを追加します。&lt;br&gt;
Forgejoの実行しているホストの3000番ポートにブラウザでアクセスして、&lt;br&gt;
管理者でサインイン、右上のメニューから「設定」、&lt;br&gt;
左側メニューで「Actions」「ランナー」、&lt;br&gt;
右上の「新しいランナーを作成」、&lt;br&gt;
「REGISTRATION TOKEN」をコピーします。&lt;/p&gt;

&lt;p&gt;以下のコマンドで、Forgejo RunnerをForgejoに登録します。&lt;br&gt;
&lt;code&gt;{TOKEN}&lt;/code&gt;部分は、先ほどの「REGISTRATION TOKEN」に置き換えます。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo su - forgejo-runner bash -c &lt;span class=&quot;s2&quot;&gt;&quot;/var/lib/forgejo-runner/forgejo-runner register --no-interactive --token {TOKEN} --name runner --instance http://127.0.0.1:3000&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;コマンド実行後に、ブラウザの画面をリロードすると、&lt;br&gt;
一覧に追加したランナーが表示されます。&lt;/p&gt;

&lt;p&gt;Forgejo Runnerを起動します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo su - forgejo-runner bash -c &lt;span class=&quot;s2&quot;&gt;&quot;/var/lib/forgejo-runner/forgejo-runner daemon&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;適当にリポジトリを作成して、&lt;br&gt;
設定の「Actionsを有効にする」をチェックした後に、&lt;br&gt;
以下のファイルをpushするとActions(CI)が実行されます。&lt;/p&gt;

&lt;p&gt;.forgejo/workflows/demo.yaml&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;s&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;pi&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;jobs&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;s&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;runs-on&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;docker&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;steps&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;echo All Good&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;systemdでのサービス化&lt;/h1&gt;

&lt;p&gt;ここまでの手順でForgejoとForgejo runnerは使えるようになったので、&lt;br&gt;
管理しやすくするために、systemdによるサービス化しておきます。&lt;/p&gt;

&lt;p&gt;Forgejo, Forgejo runnerの設定ファイルを作ります。&lt;/p&gt;

&lt;p&gt;/etc/systemd/system/forgejo.service&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ini&quot; data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;nn&quot;&gt;[Unit]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Description&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;Forgejo&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;After&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;syslog.target&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;After&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;network.target&lt;/span&gt;

&lt;span class=&quot;nn&quot;&gt;[Service]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;RestartSec&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;2s&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Type&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;simple&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;User&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;forgejo&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Group&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;forgejo&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;WorkingDirectory&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;~&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;ExecStart&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;/var/lib/forgejo/forgejo web&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Restart&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;always&lt;/span&gt;

&lt;span class=&quot;nn&quot;&gt;[Install]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;WantedBy&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;multi-user.target&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;/etc/systemd/system/forgejo-runner.service&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ini&quot; data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;nn&quot;&gt;[Unit]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Description&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;Forgejo runner&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;After&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;syslog.target&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;After&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;network.target&lt;/span&gt;

&lt;span class=&quot;nn&quot;&gt;[Service]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;RestartSec&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;2s&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Type&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;simple&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;User&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;forgejo-runner&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Group&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;forgejo-runner&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;WorkingDirectory&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;~&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;ExecStart&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;/var/lib/forgejo-runner/forgejo-runner daemon&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Restart&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;always&lt;/span&gt;

&lt;span class=&quot;nn&quot;&gt;[Install]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;WantedBy&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;multi-user.target&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;設定をリロード、サービスを開始します。&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sh&quot; data-lang=&quot;sh&quot;&gt;sudo systemctl daemon-reload
sudo systemctl &lt;span class=&quot;nb&quot;&gt;enable &lt;/span&gt;forgejo
sudo systemctl &lt;span class=&quot;nb&quot;&gt;enable &lt;/span&gt;forgejo-runner
sudo systemctl start forgejo
sudo systemctl start forgejo-runner
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;以上の手順で、ひとまずForgejoとForgejo runnerを動かす事ができました。&lt;br&gt;
各種設定は、以下の管理ガイドを参照して設定します。&lt;/p&gt;

&lt;p&gt;Forgejo administrator guide | Forgejo&lt;br&gt;
&lt;a href=&quot;https://forgejo.org/docs/latest/admin/&quot;&gt;https://forgejo.org/docs/latest/admin/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ちなみに、Forgejoの設定ファイルは、
このエントリの手順では &lt;code&gt;/var/lib/forgejo/custom/conf/app.ini&lt;/code&gt; にあります。&lt;/p&gt;

&lt;p&gt;以上。&lt;/p&gt;
</description>
        <pubDate>Mon, 18 Mar 2024 10:00:17 +0900</pubDate>
        <link>https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html</link>
        <guid isPermaLink="true">https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html</guid>
        
        <category>forgejo</category>
        
        
        <category>IT技術</category>
        
      </item>
    
      <item>
        <title>MoneyForwardを使った家計の見直し手順</title>
        <description>&lt;p&gt;2024年から新NISAがはじまるので、&lt;br&gt;
少しでも積立できるお金を増やせるように、&lt;br&gt;
最近の数ヶ月は家計の見直しをしていました。&lt;/p&gt;

&lt;p&gt;まだまだ見直しできる点はあると思われるものの、&lt;br&gt;
MoneyForwardを使ってある程度は見直しできたと思うので、&lt;br&gt;
そのノウハウをメモしておきます。&lt;/p&gt;

&lt;p&gt;全体の流れは次の通りです。&lt;/p&gt;

&lt;p&gt;準備段階&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;生活費の支払いを銀行引落・振込orクレカに寄せて１ヶ月生活する&lt;/li&gt;
&lt;li&gt;MoneyForwardのIDを作って、生活費の支払い口座を連携する&lt;/li&gt;
&lt;li&gt;「家計簿」で仕分け出来ていない出費を仕分ける&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;見直し段階&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;「収支内訳」機能で費目毎の割合を把握する&lt;/li&gt;
&lt;li&gt;「予算をたてる」機能で「あなたと似たユーザ」と比較する&lt;/li&gt;
&lt;li&gt;費目毎に対策を考え、実行する&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;準備段階&lt;/h1&gt;

&lt;p&gt;家計の見直しの準備段階として、まずは現状把握です。&lt;br&gt;
MoneyForwardの機能を使って自動的に家計簿ができるようにしていきます。&lt;/p&gt;

&lt;h2&gt;生活費の支払いを銀行引落・振込orクレカに寄せて１ヶ月生活する&lt;/h2&gt;

&lt;p&gt;自動的に家計簿ができるようにするためには、&lt;br&gt;
MoneyForwardと連携できる支払い方法に寄せる必要があります。&lt;/p&gt;

&lt;p&gt;現金や、現時点(2023年12月時点)では連携できないQRコード決済(PayPayなど)は辞めて、&lt;br&gt;
銀行引落・振込やクレジットカード払いで支払いをするようにします。&lt;/p&gt;

&lt;p&gt;銀行口座やクレカが連携できるかは、&lt;br&gt;
MoneyForwardの「口座」→「金融機関追加」から追加して確認します。&lt;/p&gt;

&lt;p&gt;銀行引落・振込やクレジットカード払いで支払いする状態で１ヶ月生活し、&lt;br&gt;
そのデータを家計見直しに使います。&lt;/p&gt;

&lt;h2&gt;MoneyForwardのIDを作って、生活費の支払い口座を連携する&lt;/h2&gt;

&lt;p&gt;MoneyForwardのIDを作って、銀行口座・クレカを連携します。&lt;/p&gt;

&lt;p&gt;MoneyForwardは会計とかいろいろありますが、&lt;br&gt;
個人向けは「MoneyForward ME」というサービスなのでこれを使います。&lt;/p&gt;

&lt;p&gt;MoneyForward ME&lt;br&gt;
&lt;a href=&quot;https://moneyforward.com/&quot;&gt;https://moneyforward.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;個人的には、住信SBIネット銀行を利用しているので、&lt;br&gt;
「MoneyForward for 住信SBIネット銀行」を利用しています。&lt;br&gt;
どちらでも良いですが、「for 住信SBIネット銀行」の方が、&lt;br&gt;
無料会員が連携できる口座数の制限が緩いみたいです。&lt;/p&gt;

&lt;p&gt;MoneyForward for 住信SBIネット銀行&lt;br&gt;
&lt;a href=&quot;https://ssnb.x.moneyforward.com/&quot;&gt;https://ssnb.x.moneyforward.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;銀行口座やクレカの連携は、&lt;br&gt;
MoneyForwardの「口座」→「金融機関追加」から追加してします。&lt;/p&gt;

&lt;h2&gt;「家計簿」で仕分け出来ていない出費を仕分ける&lt;/h2&gt;

&lt;p&gt;MoneyForwardの「家計」→「家計簿」で、「収入・支出詳細」を確認できます。&lt;/p&gt;

&lt;p&gt;この「収入・支出詳細」部分で大項目・中項目が赤色になっているものは、&lt;br&gt;
収入支出の仕訳ができていないので、適切な費目を選ぶようにします。&lt;/p&gt;

&lt;p&gt;銀行口座からのクレカの利用代金支払が、振替に鳴っていない場合は振替にしておきます。&lt;br&gt;
この指定をしておかないと支出が二重計上されてしまいます。&lt;/p&gt;

&lt;p&gt;ここまでの手順で家計簿が自動的に作られる状態になります。&lt;/p&gt;

&lt;h1&gt;見直し段階&lt;/h1&gt;

&lt;p&gt;家計簿ができたら、次の方法で支出をチェックします。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;「収支内訳」機能で費目毎の割合を把握する&lt;/li&gt;
&lt;li&gt;「予算をたてる」機能で「あなたと似たユーザ」と比較する&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MoneyForwardの「家計」→「収支内訳」で、費目毎の支出の割合を把握します。&lt;br&gt;
ここで割合が大きい費目は、見直しの効果が大きい費目と考えることができます。&lt;/p&gt;

&lt;p&gt;MoneyForwardの「予算」→「予算をたてる」で、いろいろと回答すると、&lt;br&gt;
「先月実績」と「あなたと似たユーザ」の費目毎の支出金額を比較できるようになります。&lt;br&gt;
ここで「あなたと似たユーザ」よりも金額が大きい費目は、&lt;br&gt;
見直しの余地がある費目と考えることができます。&lt;/p&gt;

&lt;p&gt;これで見直しを行うポイントを絞れたので、&lt;br&gt;
「見直しの効果が大きい」かつ「見直しの余地がある」費目から支出を見直していきます。&lt;/p&gt;

&lt;p&gt;MoneyForwardでは、以下の費目に分けられています。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;日用品&lt;/li&gt;
&lt;li&gt;食費&lt;/li&gt;
&lt;li&gt;教養・教育&lt;/li&gt;
&lt;li&gt;趣味・娯楽&lt;/li&gt;
&lt;li&gt;衣服・美容&lt;/li&gt;
&lt;li&gt;健康・医療&lt;/li&gt;
&lt;li&gt;交通費&lt;/li&gt;
&lt;li&gt;交際費&lt;/li&gt;
&lt;li&gt;住宅&lt;/li&gt;
&lt;li&gt;水道・光熱費&lt;/li&gt;
&lt;li&gt;通信費&lt;/li&gt;
&lt;li&gt;自動車&lt;/li&gt;
&lt;li&gt;保険&lt;/li&gt;
&lt;li&gt;税・社会保障&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;費目毎の具体的な見直し方法は、&lt;br&gt;
家族構成・仕事・居住地域などによって大きく異なると思うので、&lt;br&gt;
このエントリでは書きませんが、&lt;br&gt;
「○○費」「節約」とかでググれば、いろいろ情報は出てくると思います。&lt;/p&gt;

&lt;p&gt;通信費、保険あたりの節約では、&lt;br&gt;
契約する会社を変更すると安くなる情報がよく出てきますが、&lt;br&gt;
支出を「あなたと似たユーザ」程度まで下げることが目標であれば、&lt;br&gt;
会社を変えなくても、&lt;br&gt;
現在契約している会社に相談でなんとかなる場合が多いと思います&lt;br&gt;
（格安ではなく平均的な水準なので）。&lt;/p&gt;

&lt;p&gt;また、掛けようと思えばいくらでも掛けられてしまう保険などは、&lt;br&gt;
「あなたと似たユーザ」がどのくらい支出しているかは、目安として良いのかなと思います。&lt;/p&gt;

&lt;p&gt;以上。。&lt;/p&gt;
</description>
        <pubDate>Sat, 30 Dec 2023 23:19:29 +0900</pubDate>
        <link>https://takemikami.com/2023/12/30/MoneyForward.html</link>
        <guid isPermaLink="true">https://takemikami.com/2023/12/30/MoneyForward.html</guid>
        
        
        <category>日記</category>
        
      </item>
    
  </channel>
</rss>
