CentOS 7でLeanoteサーバーをセットアップする方法

Leanoteは、Golangで書かれたEvernoteに代わる無料で軽量なオープンソースの代替ツールです。Leanoteは、ユーザーエクスペリエンスを念頭に置いて、クロスプラットフォームサポート、MarkDown構文での書き込み、パブリックまたはプライベートブログ、知識の収集と共有、チームコラボレーションなど、実用的な機能を豊富に提供します。

この記事では、CentOS 7サーバーインスタンスでのLeanoteサーバーのセットアップについて説明します。セキュリティ上HTTPS supportの理由から、Let's Encrypt SSL証明書とNginxの使用を有効にすることもカバーされます。

前提条件

  • 新しくデプロイされたVultr CentOS 7サーバーインスタンス。そのIPv4アドレスがであるとし203.0.113.1ます。
  • という名前のsudoユーザーleanote
  • マシン上のすべてのソフトウェアパッケージは、EPEL YUMリポジトリを使用して最新の安定した状態に更新されています。詳細はこちら
  • leanote.example.com上記のサーバーインスタンスをポイントしているドメイン。

手順1:スワップファイルを作成します。

新しいVultr CentOS 7サーバーインスタンスを起動するときは、システムがスムーズに動作するように、常にスワップファイルを設定することをお勧めします。たとえば、2048MBサイズのスワップファイルの作成は、2GBのメモリを搭載したマシンに適しています。

sudo dd if=/dev/zero of=/swapfile count=2048 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile   none    swap    sw    0   0' | sudo tee -a /etc/fstab
free -m

注: 別のサーバーサイズを使用している場合は、スワップファイルのサイズを変更する必要があります。

ステップ2:Leanote 2.6.1バイナリファイルを取得する

Leanote for 64-bit Linuxシステムの最新の安定リリースをダウンロードして解凍します。

cd
wget https://sourceforge.net/projects/leanote-bin/files/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz
tar -zxvf leanote-linux-amd64-v2.6.1.bin.tar.gz

ステップ3:MongoDB Community Edition 4.0をインストールする

Leanoteの要求に応じて、Leanoteサーバーを正常にセットアップする前に、MongoDB NoSQL DBMSを準備する必要があります。

MongoDB 4.0 YUMリポジトリをセットアップする

MongoDB 4.0 YUMリポジトリを次のように作成します。

cat <<EOF | sudo tee /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF

YUMを使用してMongoDB 4.0パッケージをインストールする

以前に作成したMongoDB 4.0 YUMリポジトリを使用して、すべてのMongoDBコンポーネントとツールをインストールします。

sudo yum install -y mongodb-org

MongoDB 4.0用にSELinuxを構成する

デフォルトでは、MongoDBは27017作業時にポートを使用しますが、SELinuxがenforcingCentOS 7マシンのモードにある場合は許可されません。次のコマンドを使用して、現在のSELinuxモードを確認します。

sudo getenforce

Vultr CentOS 7サーバーインスタンスでは、SELinuxはデフォルトで無効になっています。したがって、上記のコマンドの出力は次のようになります。

Disabled

この場合、SELinuxの設定に関する次の手順をスキップして先に進むことができます。

ただし、元のCentOS 7サーバーインスタンスを実行している場合、上記のコマンドの出力はになりますEnforcing。MongoDBサービスを開始して有効にするに、以下の3つのオプションのいずれかを実行する必要があります。

  • オプション1:MongoDBに27017ポートの使用を許可する

    sudo semanage port -a -t mongod_port_t -p tcp 27017
    
  • オプション2:SELinuxを無効にする

    sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    sudo shutdown -r now
    
  • オプション3:SELinuxをpermissiveモードに変更する

    sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
    sudo shutdown -r now
    

MongoDBサービスを開始し、システムの再起動後にサービスを開始します。

sudo systemctl start mongod.service
sudo systemctl enable mongod.service

ステップ4:初期LeanoteデータをMongoDBにインポートする

以下のコマンドを使用して、初期LeanoteデータをMongoDBにインポートします。

rm /home/leanote/leanote/mongodb_backup/leanote_install_data/.DS_Store
mongorestore --host localhost -d leanote --dir /home/leanote/leanote/mongodb_backup/leanote_install_data/

ステップ5:MongoDB認証を有効にする

セキュリティ上の理由から、MongoDBサービスが稼働した直後に、MongoDBへのアクセス制御を有効にする必要があります。このためには、ユーザー管理者アカウントとデータベース管理者アカウントの2つ以上のMongoDBユーザーアカウントを作成する必要があります。また、MongoDB構成を変更する必要があります。

MongoDBシェルに入ります。

mongo --host 127.0.0.1:27017

adminデータベースに切り替えます。

use admin

useradminパスワードを使用するという名前のユーザー管理者を作成しますuseradminpassword

db.createUser({ user: "useradmin", pwd: "useradminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

注: ユーザー管理者useradminはすべてのMongoDBユーザーを管理することになっているため、強力なパスワードを選択することをお勧めします。もちろん、より安全なヒントは、useradmin推測しにくいユーザー名に置き換えることです。

leanoteデータベースに切り替えます。

use leanote

leanoteadminというパスワードを使用するという名前のデータベース管理者を作成しますleanoteadminpassword

db.createUser({ user: "leanoteadmin", pwd: "leanoteadminpassword", roles: [{ role: "dbOwner", db: "leanote" }] })

繰り返しになりますが、あまり知られていないユーザー名と推測されにくいパスワードを選択することをお勧めします。

MongoDBユーザーを作成したら、結果を確認できます。

use admin
db.auth("useradmin", "useradminpassword")

データベース管理者を確認します。

use leanote
db.auth("leanoteadmin", "leanoteadminpassword")

どちらも1確認として出力されます。

MongoDBシェルを終了します。

exit

MongoDBへのアクセス制御を有効にするには、MongoDB構成ファイル/etc/mongod.confに次の2行を追加する必要もあります。

sudo bash -c "echo 'security:' >> /etc/mongod.conf"
sudo bash -c "echo '  authorization: enabled' >> /etc/mongod.conf"

変更を有効にするために、MongoDBサービスを再起動します。

sudo systemctl restart mongod.service

今後は、MongoDBへのアクセスと管理、2つのユーザーアカウントのみを使用して、useradminすべてのMongoDBユーザーleanoteadminを管理し、leanoteデータベースのみを管理することができます。

ステップ6:Leanoteを構成する

Leanote構成ファイルをバックアップします/home/leanote/leanote/conf/app.conf

cd /home/leanote/leanote/conf/
cp app.conf app.conf.bak

viエディターを使用してLeanote構成ファイルを開きます。

vi app.conf

次の行を1つずつ検索します。

site.url=http://localhost:9000
db.username= # if not exists, please leave it blank
db.password= # if not exists, please leave it blank
app.secret=V85ZzBeTnzpsHyjQX4zukbQ8qqtju9y2aDM55VWxAH9Qop19poekx3xkcDVvrD0y

以下に示すように、それぞれを置き換えます。

site.url=http://leanote.example.com:9000
db.username=leanoteadmin
db.password=leanoteadminpassword
app.secret=E52tyCDBRk39HmhdGYJLBS3etXpnz7DymmxkgHBYxd7Y9muWVVJ5QZNdDEaHV2sA

注: セキュリティ上のapp.secret理由から、パラメーターの値は、元の文字列とは異なる64ビットのランダム文字列である必要があります。必ずE52tyCDBRk39HmhdGYJLBS3etXpnz7DymmxkgHBYxd7Y9muWVVJ5QZNdDEaHV2sA独自の64ビットのランダムな値に置き換えてください。

保存して終了:

:wq!

ステップ7:Leanoteを起動する

ポートでインバウンドTCPトラフィックを許可するようにファイアウォールルールを変更します9000

sudo firewall-cmd --permanent --add-port=9000/tcp
sudo systemctl reload firewalld.service

公式スクリプトを使用してLeanoteを起動します。

cd /home/leanote/leanote/bin
bash run.sh

を確認しListening on.. 0.0.0.0:9000たら、お気に入りのWebブラウザでhttp://leanote.example.com:9000Leanoteサイトの使用を開始してください。

デフォルトのLeanote管理者アカウントを使用してサインインします。

  • ユーザー名: admin
  • パスワード: abc123

セキュリティ上の理由から、デフォルトのパスワードはサインイン直後に変更する必要があります。

手順8:HTTPSアクセスを有効にする

現在のところ、安全性の低いプロトコルであるHTTPプロトコルを使用してLeanoteサーバーにアクセスできます。システムのセキュリティを向上させるためにHTTPS、Let's Encrypt SSL証明書とNginxリバースプロキシの両方をマシンに導入して有効にすることができます。

ホスト名と完全修飾ドメイン名(FQDN)を適切に設定する

Let's Encrypt SSL証明書を取得する前に、マシンのホスト名とFQDNを適切に設定する必要があります。

まず、CTRL+ Cを押してLeanoteスクリプトを停止しますrun.sh

次に、ホスト名とFQDNを次のように設定します。

sudo hostnamectl set-hostname leanote
cat <<EOF | sudo tee /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
203.0.113.1 leanote.example.com leanote
EOF

結果も確認できます。

hostname
hostname -f

ファイアウォールルールを変更する

ポートの着信トラフィックをブロック9000HTTPHTTPSサービスのポートでの着信トラフィックを許可します。

sudo firewall-cmd --permanent --remove-port=9000/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld.service

Let's Encrypt SSL証明書を申請する

Certbotユーティリティをインストールします。

sudo yum -y install yum-utils
sudo yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
sudo yum install -y certbot

ドメインのLet's Encrypt SSL証明書を申請しますleanote.example.com

sudo certbot certonly --standalone --agree-tos --no-eff-email -m [email protected] -d leanote.example.com

証明書とチェーンは次のように保存されます。

/etc/letsencrypt/live/leanote.example.com/fullchain.pem

秘密鍵ファイルは次のように保存されます。

/etc/letsencrypt/live/leanote.example.com/privkey.pem

デフォルトでは、Let's Encrypt SSL証明書の有効期限は3か月です。以下に示すようにcronジョブを設定して、Let's Encrypt証明書を自動更新できます。

sudo crontab -e

を押しIinsertモードに入り、次の行を入力します。

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew

保存して終了:

:wq!

このcronジョブは、毎日正午にLet's Encrypt証明書を更新しようとします。

Nginxをリバースプロキシとしてインストールする

EPEL YUMリポジトリを使用してNginxをインストールします。

sudo yum install -y nginx

Leanoteの構成ファイルを作成します。

cat <<EOF | sudo tee /etc/nginx/conf.d/leanote.conf
# Redirect HTTP to HTTPS
server {
    listen      80;
    server_name leanote.example.com;
    return      301 https://\$server_name\$request_uri;
}

server {

    # Setup HTTPS certificates
    listen       443 default ssl;
    server_name  leanote.example.com;
    ssl_certificate      /etc/letsencrypt/live/leanote.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/leanote.example.com/privkey.pem;

    # Proxy to the Leanote server
    location / {
        proxy_set_header X-Real-IP         \$remote_addr;
        proxy_set_header X-Forwarded-For   \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Host  \$http_host;
        proxy_set_header Host              \$http_host;
        proxy_max_temp_file_size           0;
        proxy_pass                         http://127.0.0.1:9000;
        proxy_redirect                     http:// https://;
    }
}
EOF

変更を有効にするためにNginxを再起動します。

sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl enable nginx.service

site.urlLeanote構成ファイルの設定を変更します。

cd /home/leanote/leanote/conf/
vi app.conf

次の行を見つけます。

site.url=http://leanote.example.com:9000

それを交換してください:

site.url=https://leanote.example.com

保存して終了:

:wq!

Leanoteスクリプトを再度実行します。

cd /home/leanote/leanote/bin
bash run.sh

ここで、お気に入りのWebブラウザーをにポイントするhttp://leanote.example.com/と、HTTPSプロトコルが自動的にアクティブになります。admin以前に設定した新しいパスワードでユーザーとしてサインインするか、チームコラボレーション用の新しいユーザーアカウントを登録するだけです。

もう一度、CTRL+ Cを押してLeanoteスクリプトを停止します。このスクリプトは後でデーモン化します。

ステップ9:wkhtmltopdfプログラムをインストールする

Leanoteは、wkhtmltopdfプログラムを使用してHTMLページをPDFファイルとしてエクスポートすることを選択します。インストールwkhtmltopdf

cd
wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
sudo yum localinstall -y wkhtmltox-0.12.5-1.centos7.x86_64.rpm
which wkhtmltopdf

提出することを忘れてはいけないwkhtmltopdfバイナリパス/usr/local/bin/wkhtmltopdfExport PDFLeanoteが再び稼働しているときLeanote Web管理ダッシュボードにセクションを。

注: エクスポートされたPDFファイルで判読できない文字が見つかった場合は、必要なフォントファイルを/usr/share/fonts/ディレクトリに追加して、問題の修正を試みることができます。

ステップ10:スーパーバイザーを使用してLeanoteスクリプトを稼働させ続ける

Leanoteサイトをオンラインに保つために、スーパーバイザユーティリティを使用して、クラッシュした場合にLeanoteスクリプトを自動起動できます。

YUMを使用してスーパーバイザーをインストールします。

sudo yum install -y supervisor

.iniLeanoteの簡単なスーパーバイザーファイルを作成します。

cat <<EOF | sudo tee /etc/supervisord.d/leanote.ini
[program:leanote]
command=bash /home/leanote/leanote/bin/run.sh
directory=/home/leanote/leanote/bin/
priority=999
autostart=true
autorestart=true
user=leanote
redirect_stderr=true
EOF

スーパーバイザーサービスとLeanoteサービスを開始します。

sudo supervisord -c /etc/supervisord.conf

Leanoteサービスのステータスを確認します。

sudo supervisorctl status leanote

出力は次のようになります。

leanote                          RUNNING   pid 3707, uptime 0:02:36


Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。