raspberry pi4 でGroupSessionをつかう！　「後編」

　　・それでは前辺につづき、GroupSessionののインストール等を続けます。

◎GroupSssionのデータをダウンロードして、指定されたディレクトリにコピーします。
![Screenshot 2023-10-17 at 14-35-43 無料版ダウンロード｜無料グループウェア GroupSession.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3578597/b333327c-b42e-b132-e998-ed031aab109a.png)

　　・細かすぎる説明は記述しませんが、公式サイトより最新版データをダウンロードします。

　　　ちなみに、この記事の書込はRaspberry pi4(8GB)で行っています。
　　　ターミナルで入力したコマンドなどを確認しながら、コピペ等でQiitaにUPしております。
　　　MacBookAir M1もあるけど、せっっかく設定した「マシン」なので、使ってみることに
しました。
　　　YouTube見ながら書き込みするなど、デスクトップマシンとして活用しつつ、バックグラウンドでは誰も使わないグループウェアが稼働していますww
```
　　・それでは進めます。
   # systemctl stop tomcat9.service

　　・上記のように、一度tomcatを停止させます。![Screenshot 2023-10-17 at 14-49-25 GROUPSESSION ログイン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3578597/5c13d794-e77a-f09c-303a-747ba5886912.png)


   # cd /
   # cd /home/******/Downloads/　　←　******はユーザ名です
　　・この段階でダウンロードしたファイルが確認できると思います。
　　　ファイル名は、「gsession.war」です。

   # cp /home/******/Downloads/gsession.war /opt/　　←　******はユーザ名です
   # cd /opt/tomcat9/webapps/
   # ls
　　・上記操作で、/opt/tomcat9/webapps/に「gsession.war」がコピーされます。

   # systemctl start tomcat9.service

　　・この状態で何もエラー等がなければ、ブラウザからアクセスします。
```

　　・アクセス先は、http://localhost:8080/gsessionまたは他のマシンはスマホであれば、http://192.***.+++.@@@:8080/gsessionですね。

　　　warファイルの展開に時間がかかるようですが、少し待っているとグループセッションの画面が確認できると思います。
　　　左上に「Now loading...」が現れ、少ししてから以下が確認できますね。
![Screenshot 2023-10-17 at 14-49-25 GROUPSESSION ログイン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3578597/c02b4e69-2a95-4dc7-4877-40885f143700.png)

　・さて、いかがでしょうか。
　　ID、PWは初期設定で「admin」でありますので、どうぞお試しください。

◎GroupSessionを使う際、ローカル内だけであればポート番号（:8080）があっても良いかもしれませんが、見た目が悪いのでポート番号を不要とするようnginxのインストール、リバースプロキシの設定に進みます。

```
　　・関係ないと思われますが、一応tomcatを停止させます。
   # systemctl stop tomcat9.service

   # apt-get install -y nginx

　　・nginxのconfファイルを編集するため、バックアップします。　同一ディレクトリにバックアップしました。
   # cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf-bak

　　・元のファイルを削除し、新たに作成します。
   # rm -rf /etc/nginx/nginx.conf　　　　削除です。

   # rm -rf /etc/nginx/nginx.conf　　　　新規作成します。
```
　　・以下の内容をコピペしてください。
```
   user www-data;
   worker_processes auto;
   pid /run/nginx.pid;
   include /etc/nginx/modules-enabled/*.conf;

   events {
           worker_connections 768;
           # multi_accept on;
   }

   http {
           ##
           # Basic Settings

   server {
     listen 80;
     server_name localhost;

     root /opt/tomcat9;

   #  access_log /var/log/nginx/tomcat_access.log;
   #  error_log /var/log/nginx/tomcat_error.log;

     location / {
       proxy_pass http://127.0.0.1:8080/;
   }

   }
```
　　・ctrl+oで上書き、ctrl+xで抜けてください。

　　・この記述後、私はラズパイ自体を再起動させたのち、ポート番号:8080がない状態でアクセスして確認しました。

◎次は一気にssl対応させます。
　　・以下、コマンドで進めてください。
```
　　・nginxとtomcatを一応止めます

   # systemctl stop nginx
   # systemctl stop tomcat9.service

　　・ssl関係を最新版へアップデートさせます。
   # apt-get update && sudo apt upgrade openssl
   # openssl genrsa -out /etc/nginx/ssl/server.key 2048
   # openssl req -new -key /etc/nginx/ssl/server.key -out /etc/nginx/ssl/server.csr
   # openssl x509 -days 3650 -req -signkey /etc/nginx/ssl/server.key -in /etc/nginx/ssl/server.csr -out /etc/nginx/ssl/server.crt

　　・このタイミングだったかな？　オレオレ証明書の登録内容をきかれるので、適当に登録します。　ちなみに今回のssl対応は、第三者の証明期間ではなく、自己CAで行います。

　　・必要なファイルが作成されているか確認します。
   # ls -l /etc/nginx/ssl/

　　・引き続き、nginxとtomcatのリバースプロキシの設定に進みます。
　　　前述したポート番号不要設定時に新規作成したconfファイルに加筆します。
   
   # nano /etc/nginx/nginx.conf
```
　　※最終的には以下の記述を行っています。
```

   user www-data;
   worker_processes auto;
   pid /run/nginx.pid;
   include /etc/nginx/modules-enabled/*.conf;

   events {
           worker_connections 768;
           # multi_accept on;
   }

   http {
        ##
        # Basic Settings

   server {
     listen 80;
     server_name localhost;

     root /opt/tomcat9;

   #  access_log /var/log/nginx/tomcat_access.log;
   #  error_log /var/log/nginx/tomcat_error.log;

     location / {
       proxy_pass http://127.0.0.1:8080/;
     }

   }

   #HTTPS
   server {
     listen 443 ssl;
     server_name localhost;

     root /opt/tomcat9;

       ssl_certificate     /etc/nginx/ssl/server.crt;
       ssl_certificate_key /etc/nginx/ssl/server.key;

   #  access_log /var/log/nginx/tomcat_access.log;
   #  error_log /var/log/nginx/tomcat_error.log;

     location / {
       proxy_pass http://127.0.0.1:58080/;
                }
          } 
   }
```

◎nginxだけではなく、tomcat側の設定ふぁいるにも加筆します。
  ・以下、コマンド操作を進めます。　必要であれば、xmlファイルをバックアップ願います。
```
   # nano /opt/tomcat9/conf/server.xml
```
```
・オリジナルが以下の記載です。

　　　<Service name="Catalina">

       <!--The connectors can use a shared executor, you can define one or more n>
       <!--
       <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
           maxThreads="150" minSpareThreads="4"/>
       -->


       <!-- A "Connector" represents an endpoint by which requests are received
            and responses are returned. Documentation at :
            Java HTTP Connector: /docs/config/http.html
            Java AJP  Connector: /docs/config/ajp.html
            APR (HTTP/AJP) Connector: /docs/apr.html
            Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
       -->
       <Connector port="8080" protocol="HTTP/1.1"
                  connectionTimeout="20000"
                  redirectPort="8443"
                  maxParameterCount="1000"
                  />
       <!-- A "Connector" using the shared thread pool-->
       <!--
       <Connector executor="tomcatThreadPool"
                  port="8080" protocol="HTTP/1.1"
                  connectionTimeout="20000"
                  redirectPort="8443"
                  maxParameterCount="1000"
```
　　・追記は中間の７行と後半２行です。
　　　以下は中間の７行を追記した状態です。
```
  　　　<Service name="Catalina">

    　　　<!--The connectors can use a shared executor, you can define one or more n>
    　　　<!--
    　　　<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        　　　maxThreads="150" minSpareThreads="4"/>
    　　　-->


    　　　<!-- A "Connector" represents an endpoint by which requests are received
         　　　and responses are returned. Documentation at :
         　　　Java HTTP Connector: /docs/config/http.html
         　　　Java AJP  Connector: /docs/config/ajp.html
         　　　APR (HTTP/AJP) Connector: /docs/apr.html
         　　　Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
    　　　-->
    　　　<Connector port="8080" protocol="HTTP/1.1"
         　　　      connectionTimeout="20000"
              　　　 redirectPort="8443"
               　　　maxParameterCount="1000"
               　　　/>

　　　　　※以下が追記の７行です！！！

           <Connector port="58080" protocol="HTTP/1.1"     
                  proxyPort="443" redirectPort="443"
                  scheme="https"
                  secure="true"
                  connectionTimeout="20000"
                  maxThreads="450"
                  URIEncoding="UTF-8" />



       <!-- A "Connector" using the shared thread pool-->
       <!--
       <Connector executor="tomcatThreadPool"
                  port="8080" protocol="HTTP/1.1"
                  connectionTimeout="20000"
                  redirectPort="8443"
                  maxParameterCount="1000"
```
　　・追記行をわかりやすく、行間を開けています。
　　　次に後半の２行です。
```
          <Valve className="org.apache.catalina.valves.AccessLogValve" directory>
                  prefix="localhost_access_log" suffix=".txt"
                  pattern="%h %l %u %t &quot;%r&quot; %s %b" />


　　　　※以下の２行です
           <Valve className="org.apache.catalina.valves.RemoteIpValve"
                      protocolHeader="x-forwarded-proto"/>



         </Host>
       </Engine>
     </Service>
   </Server>
```
　　・上記そのままコピペする場合、「※」ではなく、#にしていただくことでコメントアウトできます。

　　・上記設定後ファイルを研修後、再起動させてブラウザからアクセスします。

　　　当然、「https://localhost/gsession」となります。
　　　ブラウザによっては危険だよと促されますが、そのまま進めて頂いて構いません。
　　　FireFoxでアクセスすると、アドレスバーの部分はsslの記載があるものの、認証が適切ではないためか、横線で消されています。
　　　iPhoneのsafariでアクセスすると、鍵マークがしっかりで確認できますが、当然「危険なサイトだけど閲覧するの？」と確認が入ります。



さて、いかがでしょうか。

過去、どうしてもグループウェアを稼働させる必要があったため、32bitOSで稼働させていたのですが、この頃は64bitOSが主流でありますので、改めて設定してみました。

この他、ルータのポート開放を行ってからグローバルIPでアクセス可能を確認しました。

その後、DDNS Nowに登録し、ドメイン名でのアクセスも確認しています。

一応、サーバとしているので、clamavのインストール、日本語環境の整備を行い、不要アプリケーションの削除、不要デーモンの削除を行いましたのち、本記述となっています。

費用をかけずにグループウェアを稼働さ世帯などの需要に答えられると嬉しいです。

本物のサーバ構築者からすると「あまりにもチープな内容」になるかもしれませんが、何かしらの参考になれば最和であるとともに、自身のための備忘録として残しました。

これまでの設定で参考にしたQiitaページとか色々ありますが、アドレスが不明であるのでそれら記載は失礼します。　思い出したら都度追記したいと思います。