VPS活用法

メールサーバ

メールサーバって、ご存知でしょうか。gmailとかありますよね。それを自分で立てることができるという。いつもsserverwordを見て建てているのですがwebサーバって、Wordpressくらいしかやることないじゃないですか、それが終わると何をしようかと思っていたら、メールサーバというのがありまして建ててみた。SSLだけではgmailに届かない。DKIMなど導入しないといけないんです。意外と大変でした。ただ、パスワードがMD5なのでちょっとセキュリティには。。。ログみると、すごい攻撃というか総当たりが来るので、Fail2banとか必要ですね。

以下AIが書きました

自宅でメールサーバーを建てました

― Postfix・Dovecot・DKIMまで構築してみた

以前からWebサーバーやVPN、監視サーバーなどを自分で構築して遊んでいましたが、今回は少しハードルを上げて、メールサーバーを自分で建ててみました。

メールといえばGmailやOutlookなどを使えば簡単ですし、レンタルサーバーにもメール機能は付いています。

では、なぜわざわざ自分でメールサーバーを建てるのか。

答えは単純で、

「一度、自分で全部動かしてみたかったから」

です。

メールサーバーはWebサーバー以上にDNSや証明書、迷惑メール対策などが絡んでくるので、実際に構築してみるとかなり勉強になりました。

今回の構成

OSはUbuntuを使用。

メール関連は主に、

  • Postfix
  • Dovecot
  • OpenDKIM
  • Fail2ban
  • Roundcube

という構成にしました。

Postfixがメールの送受信を担当し、DovecotがIMAPなどを担当します。

Roundcubeを入れているので、ブラウザからWebメールとして確認することもできます。

そして現在のメールサーバーでは重要なのが、SPF・DKIM・DMARCです。

メールサーバーを立てて送信できたとしても、これらの設定が不十分だとGmailなどから迷惑メール扱いされる可能性があります。

単純に「Postfixをインストールしたら完成!」とはならないところが、メールサーバーの面白いところでもあり、大変なところでもあります。

DKIMも設定

今回特に勉強になったのがDKIMでした。

OpenDKIMを使ってメールに電子署名を付け、DNS側に公開鍵を登録します。

これによって受信側は、

「このメールは確かにこのドメインのメールサーバーから送信されたものなのか?」

を確認できます。

最初は、

「DNSにTXTレコードを追加するだけでしょ」

くらいに思っていましたが、実際にはOpenDKIMのsocketの場所や権限、Postfixとの連携など、いくつかハマるポイントがありました。

設定が通って、メールヘッダーに

dkim=pass

と表示されたときは結構うれしいものです。

SPF、DKIM、DMARCが正常にPASSしているのを確認すると、

「ちゃんとしたメールサーバーになったな」

という感じがします。

SSL証明書の管理も重要

メールサーバーでもTLS証明書を使います。

SMTP SubmissionやIMAPを暗号化し、安全にメールソフトから接続できるようにしています。

ここで一度やらかしたのが、サーバー移行後の証明書更新忘れ。

メールサーバーを引っ越したあと、旧環境では自動更新されていた証明書が、新しい環境ではうまく更新されていませんでした。

気付いたときには証明書の期限切れ。

慌てて更新しました。

Webサイトならブラウザに大きな警告が出るので気付きやすいですが、メールサーバーの場合はメールソフト側のエラーとして出てくるため、意外と見落としやすいです。

これをきっかけに、証明書の有効期限も監視対象に入れたほうがよさそうだと感じました。

セキュリティ対策

メールサーバーはインターネットに直接公開するサービスなので、セキュリティ対策も必要です。

今回の環境ではFail2banを使用して、不審なログイン試行を繰り返すIPアドレスを自動的にブロックするようにしています。

メールサーバーを公開すると、本当に驚くほど早く世界中からアクセスが飛んできます。

ログを見ると、

「もう来たの?」

というくらい認証を試されています。

そのため、メールサーバーを公開するなら、ログ監視やFail2banなどの防御はほぼ必須だと思います。

また、通常のメール送信についても、認証なしで誰でもメールを送れるオープンリレーになっていないことを確認しました。

もしオープンリレーになってしまうと、迷惑メール送信用サーバーとして悪用されてしまいます。

これは絶対に避けたいところです。

自分で建てて分かったこと

実際にメールサーバーを建ててみて一番感じたのは、

「メールって思っていた以上にたくさんの技術で成り立っている」

ということでした。

普段はメールアドレスとパスワードを入力するだけですが、その裏では、

SMTP、IMAP、TLS、DNS、MX、SPF、DKIM、DMARC……

と、いろいろな仕組みが連携しています。

特に「メールを送信できる」と「相手に正常なメールとして受信してもらえる」は全く別問題です。

Postfixからメールが送れた瞬間よりも、Gmailなどで受信して、SPF・DKIM・DMARCがすべてPASSしているのを確認できた瞬間のほうが達成感がありました。

今後やりたいこと

ひとまずメールの送受信は安定して動くようになりましたが、メールサーバーは「構築して終わり」ではありません。

今後は、

  • 証明書期限の監視
  • Postfix/Dovecotの死活監視
  • Fail2banのブロック状況の可視化
  • メールキューの監視
  • ディスク容量の監視
  • バックアップ
  • 不正ログインの通知

あたりも整えていきたいと思います。

すでにZabbixやPrometheus、Grafanaなども使っているので、そのあたりと組み合わせるのも面白そうです。

まとめ

メールだけが目的なら、Gmailやレンタルサーバーを使ったほうが圧倒的に簡単です。

自分でメールサーバーを運用する場合は、DNS、SSL証明書、セキュリティ、迷惑メール対策、バックアップなど、考えることがかなり増えます。

それでも、自分でPostfixやDovecotを設定し、DNSにSPF・DKIM・DMARCを登録して、実際にインターネット経由でメールが届くところまで構築すると、メールの仕組みをかなり深く理解できます。

何より、

「このメール、自分のサーバーから送られてるんだよな……」

と思うと、ちょっと楽しいです。

実用性だけで考えればクラウドサービスのほうが便利。

でも、サーバーを触るのが好きなら、メールサーバー構築はかなり面白い題材でした。

次は監視やバックアップ周りをもう少し強化して、安心して長期間運用できるメールサーバーにしていこうと思います。

IX2207 IPoE・pppoe

IX2207をオークションで落札して、二年くらいたっていた。

何回も同時使用を目指していたのですが、中々上手く行かなくてチャッピーに聞いたら教えてくれた。

基本はIPoE(OCN)のやつ。NTTルーターはIPoE使えないことは初めて知りました。

IPoEは接続リセットがかかるみたいで、wifiルーターやOCNレンタルのやつも深夜帯に接続が切れてそのまま。

IX2105を最初購入したら、接続が切れないことを知ってうれぴーだったが、

結構古い機種だと知った。その後IX2207購入したら、2018年製と書いてあり結構新しいじゃん!

で設定したり、アップデートしたり、して使って、いたのですが、IPoEとpppoe一緒に使えるのでは!

と思って、有識者のサイトを見回って設定したが・・・・。思った結果にならず

今回はopenvpnをラズパイに建てて、スマホから接続したいと思っていましたが。。。

IPoEではポート開けることできないと思って、チャッピーに聞いた

コマンド正確

コマンド正確ですね。説明書をコピペしてこいと言われ、コピペしたところ、設定データを作ってくれ成功。ネットの荒波から探す必要もなし。

route-map pppoe permit 10
match ip address access-list policy-openvpn
set interface GigaEthernet0.1

ip access-list policy-openvpn permit ip src 192.168.1.27/32 dest any

やりたかったのはこれで、pppoeで、任意のポートの通信だけpppoeへ行って他は、ipoe接続なはず。でも、192.168.1.27すべてがpppoe接続になってしまっているかもしれませんね。

interface GigaEthernet0.1
encapsulation pppoe
auto-connect
ppp binding ********
ip address ipcp
ip tcp adjust-mss auto
ip napt enable
ip napt service ***************
ip napt service ***************
no shutdown

で今のところは繋がってますが。。。チャッピーに勧められて、opensenseを触っていますが、これもルーターとしての機能です。。でもさ、IX2207持っている身としては必要性を感じない。私の勉強不足ですが、もっと設定ができる機器なはず。ただ、情報量が少ないというかNECの設定例しかないわけですから難しい。

固定IP

魅力的ですよね。OCNの場合は月1万円という。ネットワーク事業者になって元取らないといけないほど高い。pppoeだけですので、ipoeは別で1.1万くらいと。気軽に申し込みできない

RTX830も気になるところです。

SSD1306とraspberrypi

ディスプレイを使って、時刻表示してみたいと思っていましたので、

128×64ドット有機ELディスプレイを購入して、家に転がっているラズパイ3を使ってみました。

準備

半田で付けるもの楽しいですが、今回は

  • ブレッドボード
  • ジャンパーワイヤー
  • 0.96インチ 128×64ドット有機ELディスプレイ(OLED) 白色

を秋月電子で購入してきました~。1300円近くで購入

なんとなく、マイクロサーボも購入しました。

実装品を購入すれば、半田ごて要らずでできるのがいいですね。

接続

ネットを探しても、いいコードが見つからないのでどうしようかと思っていました。そこで今流行りのAIに聞いてコード書いてもらいました。便利ですがやはり間違って記述しているのもあります。ので調べています。まずは、日付時刻の表示がしたいので、聞きました。AI便利

import time
from PIL import Image, ImageDraw, ImageFont
from adafruit_ssd1306 import SSD1306_I2C
from board import I2C
import datetime

# OLEDディスプレイのサイズ (例: 128x64)
WIDTH = 128
HEIGHT = 64

# I2Cアドレス (通常は0x3Cですが、異なる場合もあります。確認してください。)
I2C_ADDR = 0x3C

try:
    i2c = I2C()  # 引数なしで I2C インスタンスを作成
    display = SSD1306_I2C(WIDTH, HEIGHT, i2c)
except ValueError as e:
    print("I2Cデバイスが見つかりません。アドレスを確認してください:", e)
    exit()

# ディスプレイを初期化 (begin() は不要)
# display.begin()  # この行は削除

# 画面をクリアするために fill() メソッドを使用
display.fill(0) # 全て黒で塗りつぶす

# フォントのロード (必要に応じて変更)
#font = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeSerif.ttf", 12)  # freefont を使用、サイズを指定
font = ImageFont.truetype("/home/pi/UビューRdisplay.ttf", 24)

# 画像オブジェクトを作成
image = Image.new("1", (WIDTH, HEIGHT))
draw = ImageDraw.Draw(image)

def display_time():
    """現在の時刻をディスプレイに表示する関数"""
    now = datetime.datetime.now()
    time_string = now.strftime("%Y-%m-%d %H:%M:%S")  # 年-月-日 時:分:秒 の形式で表示

    draw.rectangle((0, 0, WIDTH, HEIGHT), fill=0) # 画面をクリア
    draw.text((0, 0), time_string, font=font, fill=255)  # 白で描画
    display.image(image)
    display.show()

try:
    while True:
        display_time()
        time.sleep(1)  # 1秒ごとに更新
except KeyboardInterrupt:
    print("プログラムを終了します。")
    display.fill(0) # 画面をクリアして終了
    display.show()

こんな感じ。Radeonのグラボですので、AIに不向きという残念ではありますが、(本当は画像生成をして欲しかったのですが、どうしても無理)文字生成くらいなら余裕!そんなことはどうでもよくて時計だけだと寂しいので温湿度をも欲しいので、AIに聞きました。

前提として

ラズパイ4で温度計を計測してまして、たまに見てます。

ADT7410使用 高精度・高分解能 I2C・16Bit 温度センサモジュール

これおすすめ。ネットで探せばあります。

ラズパイ4からラズパイ3にデータ送信する必要あり。

コード

これもAI聞けばいいの。

ディスプレイ側

import time
from PIL import Image, ImageDraw, ImageFont
from adafruit_ssd1306 import SSD1306_I2C
from board import I2C
import datetime
import psutil  # CPU使用率を取得するために追加
import socket # 温度と湿度を受信するのに必要

# OLEDディスプレイのサイズ (例: 128x64)
WIDTH = 128
HEIGHT = 64

# I2Cアドレス (通常は0x3Cですが、異なる場合もあります。確認してください。)
I2C_ADDR = 0x3C

try:
    i2c = I2C()  # 引数なしで I2C インスタンスを作成
    display = SSD1306_I2C(WIDTH, HEIGHT, i2c)
except ValueError as e:
    print("I2Cデバイスが見つかりません。アドレスを確認してください:", e)
    exit()

# ディスプレイを初期化 (begin() は不要)
# display.begin()  # この行は削除

# 画面をクリアするために fill() メソッドを使用
display.fill(0) # 全て黒で塗りつぶす

# フォントのロード (必要に応じて変更)
font = ImageFont.truetype("/home/pi/UビューRdisplay.ttf", 14)

# 画像オブジェクトを作成
image = Image.new("1", (WIDTH, HEIGHT))
draw = ImageDraw.Draw(image)

HOST = '192.168.1.27'  # サーバーのIPアドレス
PORT = 5000        # サーバーのポート番号


def display_datetime_and_temp_humidity():
    """現在の日付と時刻、温度と湿度をディスプレイに表示する関数"""
    now = datetime.datetime.now()
    date_string = now.strftime("%Y年%m月%d日")  # 年-月-日 の形式で表示
    time_string = now.strftime("%H時%M分%S秒")  # 時:分:秒 の形式で表示

    try:
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
#            s.settimeout(5)
            s.connect((HOST, PORT))
            # Keep-Alive を有効にする (オプション)
#            s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
#            s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 30) #アイドル状態の最大時間(秒)
#            s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 5)  #プローブ間隔(秒)
#            s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 3)   #プローブ失敗時の再試行回数
            data = s.recv(1024)
            temperature, humidity = map(float, data.decode().split(','))
            temp_string = f"Temp: {temperature:.1f}°C"
            hum_string = f"Hum: {humidity:.1f}%"

    except (socket.error, ValueError):
        temp_string = "N/A"
        hum_string = "N/A"

    cpu_usage = psutil.cpu_percent(interval=1)  # 1秒間のCPU使用率を取得
    cpu_string = f"CPU: {cpu_usage}%"

    draw.rectangle((0, 0, WIDTH, HEIGHT), fill=0) # 画面をクリア
    draw.text((0, 0), date_string, font=font, fill=255)  # 白で描画 (日付)
    draw.text((0, 15), time_string, font=font, fill=255) # 白で描画 (時刻)
    draw.text((0, 35), temp_string, font=font, fill=255)  # 温度を表示
    draw.text((0, 50), hum_string, font=font, fill=255)  # 湿度を表示

    display.image(image)
    display.show()


try:
    while True:
        display_datetime_and_temp_humidity()
        time.sleep(1)  # 1秒ごとに更新
except KeyboardInterrupt:
    print("プログラムを終了します。")
    display.fill(0) # 画面をクリアして終了
    display.show()

温湿度送る側

import smbus
import time
import socket

# SHT31の設定
bus = smbus.SMBus(1)
address_sht31 = 0x45

def read_sht31():
    """SHT31から温度と湿度を読み取る関数"""
    bus.write_byte_data(address_sht31, 0x24, 0x00)
    time.sleep(0.1)
    readData = bus.read_i2c_block_data(address_sht31, 0x00, 6)

    temp = 0.00267 * ((readData[0] << 8) + readData[1]) - 45  # 温度情報
    humi = 0.00152 * ((readData[3] << 8) + readData[4])      # 湿度情報

    return temp, humi


def main():
    """温度と湿度データをサーバーとして提供するメイン関数"""
    HOST = '0.0.0.0'  # すべてのインターフェースでリッスン
    PORT = 5000        # ポート番号 (適宜変更)

    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.settimeout(60)  # 例: 60秒のタイムアウト
    server_socket.bind((HOST, PORT))
    server_socket.listen(3)  # 最大接続数: 1

    print(f"温度と湿度サーバーがポート {PORT} で起動しました。")

    try:
        while True:
            conn, addr = server_socket.accept()
            with conn:
                print(f"{addr} が接続しました。")
                while True:
                    try:
                        temperature, humidity = read_sht31()
                        data = f"{temperature:.1f},{humidity:.1f}"  # データフォーマット
                        conn.sendall(data.encode('utf-8'))  # データを送信
                        time.sleep(5)  # 5秒ごとに更新
                    except BrokenPipeError:
                        print("クライアントとの接続が切断されました。")
                        break # 内側のループを抜ける
                    except Exception as e:
                        print(f"送信エラーが発生しました: {e}")
                        break # 内側のループを抜ける

    except KeyboardInterrupt:
        print("サーバーを終了します。")
        server_socket.close()


if __name__ == "__main__":
    main()

AIすごい。

もう、ネットで探しまくることもない。

今は、常時起動して運用しています。

以上

次は、駅の電光掲示板みたいのを買って遊びたいと思います。

ラズパイの電源からは足りないと聞いていますので考え中

驚愕!作業効率が倍増するパソコンの裏ワザ10選

第1章:ショートカットキーで時短!基本操作をマスター

よく使うWindowsショートカットキーまとめ

 Windowsでは、ショートカットキーを活用することでPC作業の効率を劇的に向上させることができます。たとえば、「Ctrl + C」でファイルやテキストをコピーし、「Ctrl + V」で貼り付ける方法は基本中の基本です。また、「Ctrl + S」で定期的に保存することは、作業中のトラブルやデータ損失の回避に役立ちます。さらに、「Windows + E」を押すことでエクスプローラーを素早く開くことが可能です。これらの裏技を身に付けることで、日常の作業が大幅にスピードアップします。

Macユーザー必見!便利なキーボード操作

 Macユーザーもキーボード操作をマスターするだけで、作業効率がグンとアップします。たとえば、「Command + C」でコピー、「Command + V」で貼り付け、「Command + Z」で操作を取り消すといった基本操作は、Windowsでのショートカットと似ています。また、「Command + Tab」を押せば、アプリ間の切り替えが簡単に行えるほか、「Command + Shift + 3」で画面全体のスクリーンショットを撮影することも可能です。これらの操作を駆使すれば、Macの操作性を最大限に引き出すことができます。

よく使うショートカットキーをカスタマイズする方法

 頻繁に使用するショートカットキーをカスタマイズすることは、作業スピードをさらに向上させる裏技です。Windowsでは「設定」→「デバイス」→「キーボード」の項目から、一部のショートカット設定を変更できます。一方、Macでは「システム環境設定」→「キーボード」→「ショートカット」から、機能ごとにカスタマイズが可能です。たとえば、自分の業務で使う頻度が高い操作にショートカットを割り当てれば、より直感的な操作が実現します。

ショートカットの覚え方!初心者でも取り入れるコツ

 ショートカットは覚える手間がかかると思われがちですが、実は簡単に習得できる方法があります。まずは日常的によく使う操作(コピーや貼り付け)に絞って覚えるようにしましょう。また、キーボードの近くにメモを貼り付けておくと視覚的に覚えやすくなります。さらに、習慣化するには1つの新しいショートカットキーを毎日使うよう心掛けましょう。このように少しずつ取り入れることで、初心者でも無理なくショートカット技術を習得できます。

第2章:画面操作を極める!快適なデスクトップ活用術

ウィンドウを瞬時に分割!Windows+矢印キーの裏ワザ

 Windowsパソコンでは、画面内で複数のウィンドウを効率よく配置することが大切です。ここで活用したいのが「Windows+矢印キー」です。このショートカットを使うと、アクティブなウィンドウを画面の左半分や右半分、さらには四隅にスナップして配置できます。PC作業を快適にし、大画面モニターを活用したマルチタスク作業がぐっとスムーズになります。

複数のデスクトップを有効活用する方法

 Windowsの「仮想デスクトップ機能」は、作業内容に応じて画面を使い分けたいときに非常に便利です。例えば、仕事用、プライベート用、リサーチ用といった複数のデスクトップを作成することで、ウィンドウが散らかることなく集中できます。この機能は「Windows+Tab」から簡単に操作できます。PCの裏技として、多岐にわたる作業を整理するのに役立つ便利なテクニックです。

Alt+Tabでアプリ間の移動をスムーズに

 複数のアプリケーションやウィンドウを同時に扱う場合、「Alt+Tab」を活用することで短時間で目的のアプリに切り替えることができます。キーを押し続けると、開いているすべてのウィンドウが一覧表示され、一覧から素早く選択可能です。この操作を習慣化するだけで、操作時間の短縮が期待できます。特に、作業効率を重視するPCユーザーには欠かせない裏技と言えます。

よく使う場所を瞬時に探し出すクイックアクセス設定

 Windowsエクスプローラーの「クイックアクセス」は、よく使用するフォルダやファイルに素早くアクセスできる便利な機能です。使い方は簡単で、頻繁に利用するフォルダをクイックアクセスにピン留めするだけです。「Windows+E」のショートカットでエクスプローラーを起動し、作業を効率化できます。この設定を取り入れることで、無駄な検索時間を削減し、快適なPC作業を実現できます。

第3章:ソフトウェアの便利機能を知って作業効率化!

Excelの「神関数」SUMIFやVLOOKUPで時短する

 Excelの「神関数」として知られるSUMIFやVLOOKUPを活用することで、データ集計や検索の作業が飛躍的に効率化されます。SUMIFは特定の条件に一致するデータだけを合計することができ、例えば「特定の商品カテゴリーの売上合計を出す」作業などに便利です。一方、VLOOKUPを使用すれば、膨大なデータの中から必要な情報を瞬時に検索し表示させることが可能です。これらの関数は見た目は難しそうですが、公式を使いこなすことで、PC裏技として大きな効果があります。特に定型作業の多い業務では、これらを事前に習得しておくことで作業効率が大幅に向上します。

Googleドライブで書類作業を効率よく進めるコツ

 Googleドライブは、クラウド上でファイルを管理・編集できる便利なツールです。特に、他のユーザーとリアルタイムで作業ができる「共同編集」機能は、チーム内での業務に最適です。また、「フォルダごとに権限を設定する」ことで、ファイルの安全性を確保しながら効率的に管理できます。さらに、GoogleスプレッドシートやGoogleドキュメントには簡易的ながら強力なショートカット機能が搭載されており、これを活用するだけで操作がスムーズになります。PC作業を効率化するためにはGoogleドライブを上手に活用することが重要です。

Chromeの便利拡張機能でさらに効率UP!

 Google Chromeの拡張機能をうまく活用することで、ブラウジングや作業効率を劇的に向上させることができます。例えば「Grammarly」は文章校正を自動で行ってくれるため、日常的に多文字入力を行う方にとっては強い味方です。また、「Tab Manager」系の拡張機能を使えば、複数のタブを一括整理でき、作業中にタブが乱雑になるのを防ぎます。他にも、画面全体をキャプチャできる「Full Page Screen Capture」や、オンラインで便利にメモが取れる「Google Keep Chrome Extension」などもおすすめです。これら裏技的な拡張機能は、日々の作業を効率化する強力な武器になります。

メール作成のテンプレート化で作業を半分に

 メール作成に時間を取られがちな方にとって、テンプレート作成は非常に効果的です。Gmailであれば「テンプレート機能」を活用することで、定型文を簡単に挿入することができます。また、作業効率をさらに高めるために、よく使うフレーズをショートカット登録しておくのもおすすめです。例えば、挨拶文や署名などをテンプレート化することで、1通のメール作成にかかる時間を大幅に短縮できます。これらの操作を組み合わせて使うと、メール業務が驚くほどスムーズになります。このコツを身につけることで、さらに高度なPC裏技を実行できるでしょう。

第4章:意外と知らない!トラブル回避とメンテナンス技

突然のエラーに対応するための基本知識

 パソコン作業中に突然のエラーが発生すると、つい慌ててしまいますが、適切に対応することで状況の悪化を防ぐことができます。まず、エラー発生時には慌てずに画面上のエラーメッセージやコードを確認することが重要です。この情報を、そのまま検索エンジンに入力すると、問題の原因や解決方法を見つけられる場合があります。また、PCに内蔵されている「イベントビューアー」を活用することで、エラーの詳細情報を確認できます。それに加え、基本的なメンテナンスとして、OSやソフトウェアのアップデートを定期的に実施し、最新状態を保つことでエラー発生率を下げることができます。

キャッシュクリアのタイミングと効果

 キャッシュクリアは、PCやブラウザ動作を軽快にするための重要なメンテナンス技です。キャッシュとは、一時的に保存されたデータのことで、ウェブページの読み込みを高速化する役割があります。しかし、キャッシュが溜まりすぎると逆に動作が重くなったり、ページが正しく表示されなかったりすることがあります。定期的にキャッシュをクリアすることで、このようなトラブルを未然に防ぎ、快適な作業環境を維持できます。一般的には、ブラウザの設定メニューからキャッシュデータを削除することが可能です。また、PCの一時ファイルも定期的に整理することで更なる効果を得られます。

バックアップの自動化で安心快適な作業環境を作る

 バックアップを自動化することは、突然のデータ消失のリスクを大幅に軽減します。まず、定期的に重要なデータを外付けハードディスクやクラウドストレージに保存しましょう。多くのクラウドサービスでは、自動バックアップ機能が提供されており、設定を済ませるだけで手間が省けます。また、Windowsでは「ファイル履歴」機能や「バックアップと復元」機能を活用することで、システム全体の定期バックアップも可能です。これらを利用すれば、PC作業中の安心感が向上し、トラブルが発生しても迅速な復旧が可能になります。

不要ファイルの整理とディスククリーンアップ術

 不要ファイルの整理は、ハードディスク容量を効率的に使用するための基本的なメンテナンス方法です。蓄積された不要なデータはPCの動作を鈍らせる原因になるため、定期的に整理しましょう。「ディスククリーンアップ」機能を使えば、ワンクリックで一時ファイルや不要なシステムデータを削除できます。また、ゴミ箱の中身を空にするのも効果的です。さらに、特定のディスク領域を詳細に整理したい場合は、エクスプローラーでファイルサイズ順に並び替え、一括削除を行うと効率的です。このプロセスを習慣にすることで、PCの動作を常に良好な状態に保てます。

第二回 WEBサービス作り

第一回から離れすぎなのでは、とは思いますが本を管理する物を作成したいですよね。私本管理plusでもいいとは思いますが、Amazonにあるデータを取得して保存するという感じなのですが、Amazon倉庫にある新刊などはいいのですが、新刊ではない本はあまりデータが出てこない場合やタイトルが変なやつも多くあります。そこで、hontoからデータの取得していくというプラグインがあり、それをずっと利用して来たのですが、最近利用できず。。無料で使っているので気長に待つのみ。

何を作ろうかなと思っていまして、漫画が自宅に沢山ある状況で本の管理!

自分で作ってみるのもあり。と思いまして、Pythonで作ろうとなりました。

と言ってもPythonの学習度ほぼゼロ。

ということはAIに作って貰おうとなりました。

openaiを課金し、ChatGPTを使いました。さらにopenwebuiを導入しています。

openwebuiを使っているのは、Ollamaを使って遊んでいたのですが、Ollamaはメモリーも沢山必要だし、CPUも勿論。ハンバーグのつくり方を聞くぐらいが適している。

openaiもモデルを選び質問ができるようになっている。ふわっとした質問にもしっかり答えてくれます。

ここまで、たどり着きました。使用したのは、https://ndlsearch.ndl.go.jp/api/opensearchです。国立国会図書館サーチAPIを使用した。SRUでもsqlに保存できたのですが、タイトルでは区別がつかないため巻数が欲しかったのだが、SRUでは難しかった。SRUはXMLでお願いします!と伝えないとダメでした。プログラミングなんてしたことがなかったが、説明書見てたらかいてありました。(;’∀’)opensearchは意外と簡単だったので安心。

原因を突き詰めるのは楽しいですね。まあ、AIに聞いてますけど。。

登録システムは作れたので、次は検索機能を作りたいです。

本当はnode.jsなどを使って作りたいが、学習力が不足してます。AIの不足しているところを全く補えない。全く分からない。

第一回 サーバー構築

サーバー構築に興味ありますよね。サーバーといえば、マインクラフトサーバーとかウェブサーバーとかがよくありますけど。。なんかやりたいことと違うなと思っていました。ウロウロと検索をしていると色んなサーバーソフトがありまして、それらを少しずつ紹介したいなと思います。

 サーバーに興味あるなら、VPSを契約するべきです。いや、、家でやるのも楽しいです!!まずは、ヤフオクに言ってサーバーと検索すれば沢山でます。特に多いのは富士通のPRIMERGY TX1320 M3が多く出ている感じですね。安いものから高いものまでありますが、CPU・HDD・memoryがないものは安くても選ばない方がいいです。初期費用高くなる。まあ、普通のPCでも出来ますのでどれでもいいと思います。メモリーは16GB以上あるのがあとから仮想マシンとかね。できますよね。ラズパイでもいいのですが高性能になり高くなってますよね。。。

なんだかんだ

なんだかんだ言って、ubuntuserverが一番扱い安いと思います。centosとかRockyとかありますが

Pythonをインストールするか!

Python9がリストにあるんでインストールします。

うーーーーーん。Python10以上って書いてある。。。

ソースコードからのやつか。。。やるか。。

こんなことがよく起こります。するとやる気が無くなってくるので最初は、ubuntuがいいのではないでしょうか。

Uptime Kuma

最初に持ってくるのかな。と思いますが今やっているので。

こんな感じですね。今回はdockerを使用していませんが、docker使えば楽に構築できると思います。WEB公開はVPSを利用。

https://github.com/louislam/uptime-kuma

こちらに書いて在ります。Non-Dockerを参考にして構築しました。モニター見ているだけでも楽しいですね。サクラのレンタルサーバーでこちらを運営してますので、登録してみました。まあ、稼働率100%ですけど。。

caddy

caddyを使って、https対応をしました。traefikを使った時はチンプンカンプンでしたが、こちらはとっても分かりやすかったです。直ぐに実行できました。ドメインが必要ですので、買ってもいいですし、mydnsで無料ドメインでもいいと思います。mydnsはIPアドレスの通知が必要ですので、ご注意ください

私は、mydnsの更新方法

4 6 * * * wget -o – ‘https://<userid>:<password>@ipv4.mydns.jp/login.html’

でcrontabで登録してます~。

簡単に

ubuntuなら

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

私は、Rockyなのでcentosなど

dnf install 'dnf-command(copr)'
dnf copr enable @caddy/caddy
dnf install caddy

などなど、インストールできます。

リバースプロキシというものを使います。httpsにできるやつ~

Cabbyfileを作成して

{
email your_mail_address_<メールアドレス>
}
<サブドメイン> {
reverse_proxy 127.0.0.1:3001
}

を入力、保存。私は、vi使用。

caddy adaptをコマンド実行。sudo caddy runをコマンド実行!

でできました。

次回

構築したものを少しずつ紹介出来ればと思います。traefikを再取得したい。のとKubernetes

したい以上

traefikを使う

traefikって、ご存知でしょうか。リバースプロキシソフトウェアらしいです。そもそも外部には公開しないので余り活用はできなさそうですが、ルーターを超えて使用すると色々とめんどくさいです。私は、ただ眺めるだけですが。

dockerで動かすのが通常なので、やっぱりVPSとかの用意が必要ですね。私は大学生の時からサーバーとかに興味ありましたがラズパイを買ってしまったのが間違いでした。確かにラズパイでサーバーとして運用出来るのですがメモリー1Gではねぇ全く使いものにはなりません。windowsの仮想マシンでわちゃわちゃするのも楽しいですが、やっぱりPCを別に用意必要

traefik.yml: is a directory

私は、これにぶち当たります。本当にみなさんは出来ているのですか?と確認したくなる所です。doker起動する前に、traefik.ymlを生成したらいいのでは?と思い、生成してdockerを起動すると、traefik.ymlはディレクトリだろう?というエラー続出というね。色んなサイトを見ても解決はしなかった。これを解決する時間が勿体無いので私は、全てdocker-compose.ymlに記載しています

traefik:
    image: "traefik"
    container_name: "traefik"
    command:
      #- "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entryPoints.web.address=:80"
      - "--entryPoints.mysql.address=:3306"
      - "--entryPoints.openwebui.address=:3000"
      - "--entryPoints.ollama.address=:11434"
      - "--entryPoints.adminer.address=:8051"
      - "--entryPoints.phpmyadmin.address=:3005"
    ports:
      - "80:80"
      - "4000:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

まあ、これを書いた所で、特にありません。

image: “traefik”

は大事、ネットあるあるの情報が古いパターンなのでバージョンが最新版ではないです。なので、バージョン指定なしにすれば最新版がダウンロードされますよ。(多分)

– “–entryPoints.openwebui.address=:3000”

これを入力すると、WEBUIで表示されるのでとっても便利なんですかね??ポート番号が分かるので何処かに入力するとかは必要ないかもしれません

これこれ

私はこんな感じですね。

nginxが便利かも。

service-a:
    image: nginx
    volumes:
      - ./service-a:/usr/share/nginx/html/service-a
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.service-a.rule=PathPrefix(`/service-a`)"
      - "traefik.http.routers.service-a.entrypoints=web"

何処かで参考にしたものですが、これを使用したら無限に作れそうです。SSL対応も出来ますが私のは外部にアクセスを目的にしてないので出来ないですっ。https://doc.traefik.io/traefik/user-guides/docker-compose/acme-tls/ に載っていますが、この通りにコピペしたらいけました。ただ、認証局は通ってないような?あるような??わかりません。
自宅サーバーで遊ぶくらいなら大丈夫!

tailscal 最強

これは知らなかった。VPN使いやすい。SSL対応のドメインも使えるのでぜひ

proxmox ①

どうも。

ubuntuでdockerを使いたいと思っていまして、ラズパイ3を使っていたのですが、もっさり過ぎてもう無理です。ラズパイ5を購入してもいいのですが、中古のPCを色々と探していたところいいのが見つかりました。今までは、i7-3770という骨董品を使って居たのですが、FANが五月蠅いというのと自作PCなのででかいのが気になっていました。大須でいいのがありまして、i5-9500の搭載の中古PCがありまして購入しました。HHDとSSDも入っているお得な商品でしたとさ。

ubuntuだけではと思いまして、proxmox上から利用しています。

アップデートができない

ネットに繋がっていないと思っていませんでした。え。え。アップデート出来ていると思っていた。

sensorsコマンドをインストールしようとしましたら、「パッケージありません。」と出てまして、ubuntuにはそんなパッケージはないのではないか。と思って、色々と検索したり、リポジトリが違うとかの可能性を考えたり、したわけですがDNSが内部ループになっていた。

DNSがちがう。

なんか、インストールした時に間違えたのかもしれませんが、DNSが127.0.0.1になっていて、罠に引っかかりましたとさ。仮想マシンの利用だけなら気付かなかったかも。

VLAN

VLANを作成したいのですが、うーん。いまいち参考資料みても出来ないので、色んなサイトを見て出来るようにしたいですね。出来ればVM通しだけのを作成したい。

ubuntu

/etc/fstabの書式を間違える。でも、VMだから、proxmox上で訂正出来るのがいい。ラズパイだとHDMIを用意してモニターが必要だったので、面倒でした。

今後

10Gを構築したい。その為の機器はあるが、、、

岐阜の柳ケ瀬商店街の閑散さが逆に魅力?{AI作成}

AIが作成したもので、私・管理者が作成したものではありません。添削もしてませんので、話半分で見てください。

# 柳ケ瀬商店街の現状


岐阜県にある柳ケ瀬商店街は、現在閑散としています。かつて賑わっていた商店街がどのようにしてこのような状況に至ったのか、その原因を探ってみましょう。まず、地域の人口減少や高齢化が一因とされています。若者の流出や出産率の低下が進み、商店街に訪れる人々が減っているのです。さらに、インターネットの普及や大型商業施設の競争も、商店街の閑散さを引き起こす要因となっています。大手通販サイトの利用の増加やショッピングモールの集客力により、柳ケ瀬商店街の魅力が薄れてしまったのです。

# 柳ケ瀬商店街の現状


岐阜県に位置する柳ケ瀬商店街は、現在閑散としている状況です。かつては活気に満ち、多くの人でにぎわっていましたが、最近では閉店やテナントの減少が目立ちます。地域の人口減少や高齢化が主な原因とされており、若い世代や需要の変化に対応することが課題となっています。また、インターネットの普及や大型商業施設の台頭など、外部からの競争も商店街の閑散さを招く要因として挙げられます。このような状況が続くと、閉店率が高まり、商店街全体がシャッタータウン化してしまう危険性もあります。しかし、一方で閑散さには独特の魅力もあります。のどかな雰囲気やゆったりとした時間の流れが、多くの人々にとって心地よい環境を提供しています。また、柳ケ瀬商店街は観光地としての魅力も持っており、地元住民の共感を得る要素もあります。再活性化策としては、地域の協力やイベントの開催などが挙げられます。さらに、閉店やテナント減少の防止策や地域資源の活用方法にも注力する必要があります。柳ケ瀬商店街が再び活気づく日を心待ちにしています。

# 閑散さの原因と閉店率の高さ


岐阜市にある柳ケ瀬商店街は、現在閑散としている状況にあります。人々の足が遠のいたり、閉店やテナントの減少が目立つ状況です。この閑散さの原因としては、地域の人口減少や高齢化が挙げられます。また、インターネットの普及や近隣の大型商業施設の競争も影響しています。このような理由から、柳ケ瀬商店街の閉店率は高くなっています。閑散さが進むことで、シャッタータウン化のリスクも出てきます。

# 閑散さの魅力に迫る


岐阜の柳ケ瀬商店街は、閑散として知られています。しかし、その閑散さがもたらす独特の魅力もあります。まず、その落ち着いた雰囲気が挙げられます。他の賑やかな商店街とは一線を画し、のんびりとした時間の流れが感じられます。また、大都市の喧騒から離れて、心地よい静けさが広がっています。柳ケ瀬商店街は観光地としても人気があります。石畳の道や情緒ある街並みが、多くの人々を魅了しています。地元住民と観光客が一体となって、この閑散さを肌で感じることができるのも、柳ケ瀬商店街の魅力です。さらに、地元の特産品やお店によっては、閑散さを活かした独自のサービスが展開されています。お店の人との距離が近く、ゆっくりと商品を選ぶことができるため、他の商店街では味わえない買い物の醍醐味を感じることができます。このように、閑散さがもたらす魅力は大きいのです。地元住民と観光客の共感を得ながら、柳ケ瀬商店街の再活性化に取り組むことが求められています。

# 柳ケ瀬商店街の再活性化策


岐阜にある柳ケ瀬商店街は現在、閑散とした状況にあります。地域の人口減少や高齢化などが原因として挙げられますが、その他にもインターネットや商業施設の競争も影響しています。このような閑散の状況は閉店率の上昇にも繋がります。閉店の要因を探り、シャッタータウン化のリスクを考察する必要があります。しかし、閑散さには一定の魅力もあります。落ち着いた雰囲気やのんびりした時間の流れは多くの人々の共感を得ています。観光地としての魅力もあり、地元住民の支持も集めています。再活性化策としては、地域の協力やイベントの開催が有効です。閉店やテナント減少の防止策や地域資源の活用方法も考える必要があります。柳ケ瀬商店街の魅力を再び引き出すために、様々な施策を講じることが求められます。

[最新版]マインクラフトサーバーの建て方

今まで色々と書いていますが、今回が最新版ということで紹介していきます。

準備

  • やる気
  • windows10以降
  • Windows10上で動くubuntuを、、敢えて。
  • マインクラフト。java版もね。
  • javaのインストール
  • viコマンドは矢印キーのみ、マウス×
  • 一切の責任は負いません。自己責任です

java版から説明

まずは、ubuntuを取得していきましょう~。持っていない方は、Microsoftstoreから取得してくださね。

マイクラの前段階

では、ubuntuを起動しましたら、バージョンが古くなっていることがありますので、

sudo apt update && sudo apt upgrade

を実行しましょう。パスワードは初回時に設定したパスワードですよ~。ラズパイでもそうなんですけどアップデートとアップグレード長いんすよね。ダウンロードが遅いのが気に入らない。。

マイクラの下準備
フォルダ作り

次の工程は、フォルダを作ります。今の段階だとデスクトップにファイルがひとつずつ出来てしまう状況なので、新しいフォルダの作成しましょう。名前は適当でよろしいかと。

mkdir mine java用

mkdir mine2  BEDROCK 用

mineというフォルダを作りました。そうしたら、cd ./mine でフォルダ移動してください。

java入れ

javaがまだ入ってない状態なので、

sudo apt install openjdk-17-jdk

をインストールしてください。私は仕事では全く使わない人なので効率の良いコマンドの打ち方とかは全く知らないのでご了承ください。YES yを選んでください。(sudo apt install openjdk-17-jdk -y)と付ければ、YESの選択はありません。

java版のサーバー作り

cd ./mine でフォルダに移動していると前提していきます。

こちらは最新版(1.20.2)の話でして、古いバージョンで遊びたいとしても1.17くらいまでにしておきましょう。java8バージョンはサポートが終了しているとかしてないとか、している場合はネットに公開するには危険です。前置きは置いておいて、ダウンロードしましょう。

wget https://piston-data.mojang.com/v1/objects/5b868151bd02b41319f54c8d4061b8cae84e665c/server.jar

ls -l

とコマンド打って頂きますと、一覧表示ができ、server.jarが出来ていると思います。そうしたら、一旦起動します。まだ遊べません(´;ω;`)

java -Xmx1024M -Xms1024M -jar server.jar nogui

このようになります。マイクラサーバーあるある、規約に同意しな。と言われ、一旦閉じます。私はviコマンドを利用してますので悪しからず。

vi eula.txt

を開いて、falseをtrueに変えてください。escキー一度押して、false付近に来てxキーで消す。=付近でaキーを押して、trueを入力、escキーを押して、:キーを押して、wqを入力、エンターキーを押す。

次に行きます。先ほどのjava -Xmx1024M -Xms1024M -jar server.jar nogui をもう一度コマンドすれば起動してサーバー完了。サーバーを閉じる時は、必ずstopを入力する。

入る

サーバーに入りましょう~

はい。こんな感じ。ポート開放は別途必要です。ポート開放便利

ポート開放は別途説明します。

BEDROCK 版の説明します。

作成前に、、、

こちらだけ先にインスコが必要です。zipフォルダを解凍する機能がないので、

sudo apt install unzip -y

で解凍機能を追加しましょう

先ほどと似ている所多し。

cd ./mine2 に移動しているのが前提。

まずは、サーバーのデータをダウンロードします。javaではありません。

wget https://minecraft.azureedge.net/bin-linux/bedrock-server-1.20.40.01.zip

からの

unzip bedrock-server-1.20.40.01.zip

を実行してください。

./bedrock_server

こちらで起動してください。まあ、エラーが起きますので、stopで一旦終了してください。

================ TELEMETRY MESSAGE ===================
[2023-10-31 00:45:42:645 INFO] Server Telemetry is currently not enabled.
[2023-10-31 00:45:42:645 INFO] Enabling this telemetry helps us improve the game.
[2023-10-31 00:45:42:646 INFO]
[2023-10-31 00:45:42:646 INFO] To enable this feature, add the line 'emit-server-telemetry=true'
[2023-10-31 00:45:42:646 INFO] to the server.properties file in the handheld/src-server directory
[2023-10-31 00:45:42:646 INFO] ======================================================

と書いてあるように、server.propertiesを開いて、emit-server-telemetry=trueを記載します。

vi server.properties

で、escキーを一度押し、最終行へ移動。Gキーで移動します。矢印キーでもいいですが。最終行に行きましたら。oキーを押し、emit-server-telemetry=trueを入力、保存。

そうしたら、./bedrock_serverをもう一度起動で行きます。

スマホ版などでやる方は、パソコンのポート開放が必要。java版と違い、PC版も必要かも??

ポート開放

余裕があるときに入力します

どうだった。

多分。

まあ、初心者には難しいけど、パソコン好きになるといいね。さあ、IT企業へ

全く関係ない仕事をしている者が言っていますので、ご注意を

Dockerも習得したいが、分からなすぎる。クバネテスも。。。。

わからん。

私もわからん。