Dockerでプリザンターを動かす(Samba-ad連携)

 前回でひとまずの目的は果たしたものの、なんとなくほかにもActiveDirectoryで連携できるようなものはなんでもsamba-adで認証したい病が発症し、画面から設定できるRedmineはもちろんのことKintoneクローン?のOSSであるプリザンターをsamba-adと連携させて動かしてみようと思い立ちました。むろんお約束のDockerでです。そしてお約束のコピペつぎはぎでやってます。

◆Version等

20.04.2 LTS (Focal Fossa)
Docker version 20.10.8, build 3967b7d
docker-compose version 1.29.1, build c34c88b2

◆構築手順

1.初期設定等

#ホスト機のDNS変更
$ sudo vi /etc/netplan/00-installer-config.yaml
-------------------------------------------------
# This is the network config written by 'subiquity'
network:
  ethernets:
    eth0:
      addresses:
      - 192.168.0.40/24    仮想マシン1台にIPを複数割当てポート443を個別割当可能とする
      - 192.168.0.41/24
      gateway4: 192.168.0.1
      nameservers:
        addresses:
        - 192.168.0.10        #Samba-adのIPアドレス
        - 192.168.0.20        #Samba-adのIPアドレス
  version: 2
-------------------------------------------------
$ sudo netplan apply

2.Docker関連作業

# リポジトリコピー(参考サイトのリポジトリ完全流用)
$ cd docker/
$ git clone -b ssl https://github.com/yamada28go/pleasanter-docker-PostgreSQL.git pleasanter
Cloning into 'pleasanter'...
remote: Enumerating objects: 313, done.
remote: Counting objects: 100% (38/38), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 313 (delta 16), reused 21 (delta 8), pack-reused 275
Receiving objects: 100% (313/313), 71.02 KiB | 2.29 MiB/s, done.
Resolving deltas: 100% (148/148), done.
$ cd pleasanter/
$ rm -Rf cron-backup

# Dockerの準備
$ vi docker-compose.yml
------------------------------------------
version: "3.8"

networks:
  pleasanter-service-network:

services:
  postgres-db:
    build: postgres/.
    container_name: db-container
    expose:
      - 5432
    environment:
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_PASSWORD=${DB_PASSWORD}
      - PGPASSWORD=${PGPASSWORD}
      - POSTGRES_DB=${DB_NAME}
      - DATABASE_HOST=${DATABASE_HOST}
      - DB_EXTENSION=pg_trgm
      - PGTZ=${TZ}
    command: 'postgres -c config_file="/etc/postgresql.conf"'
    volumes:
      - ./postgres/init:/docker-entrypoint-initdb.d
      - ./postgres/conf/postgresql.conf:/etc/postgresql.conf
      - ./db-data:/var/lib/postgresql/data
      - ./db-arclog:/var/lib/postgresql/arclog
    networks:
      - pleasanter-service-network
    env_file:
      - .env
    restart: always
  pleasanter-web:
    build:
      context: pleasanter/.
      args:
        - GIT_HASH=${GIT_HASH}
    networks:
      - pleasanter-service-network
    env_file:
      - .env
    environment:
      - TZ=${TZ}
    restart: always
  https-portal:
    image: steveltn/https-portal:1
    ports:
      - ${WEB_IP}:80:80
      - ${WEB_IP}:443:443
    environment:
      DOMAINS: >-
              ${WEB_IP} -> http://pleasanter-web
      CLIENT_MAX_BODY_SIZE: 500M
      #HSTS_MAX_AGE: 60
      #ERROR_LOG: stdout
      #ACCESS_LOG: stderr
      STAGE: 'local'
      TZ: ${TZ}
    networks:
      - pleasanter-service-network
    volumes:
      - ./ssl_data:/var/lib/https-portal
    env_file:
      - .env
    restart: always
    depends_on:
      - pleasanter-web
      - postgres-db
-------------------------------------
$ vi .env
-------------------------------------
DB_USER=postgres
DB_PASSWORD=passwd
PGPASSWORD=passwd
DB_NAME=pleasanter
DATABASE_HOST=localhost
WEB_IP=192.168.0.40
#1_1_13_0以降では起動NGとなるので起動可能だった最新バージョンを使用(#1_1_12_2)
GIT_HASH=cd4dbb83607b9e11b3284e75c461dbea8297b228
TZ=Asia/Tokyo
-------------------------------------

# DB定義
$ vi pleasanter/Rds.json
-------------------------------------
{
        "Dbms": "PostgreSQL",
        "Provider": "Local",
        "TimeZoneInfo": "Tokyo Standard Time",
        "SaConnectionString":"Server=postgres-db;Port=5432;Database=pleasanter;UID=postgres;PWD=passwd",
        "OwnerConnectionString":"Server=postgres-db;Port=5432;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=SetAdminsPWD","UserConnectionString":"Server=postgres-db;Port=5432;Database=#ServiceName#;UID=#ServiceName#_User;PWD=SetUsersPWD",
        "SqlCommandTimeOut": 600,
        "MinimumTime": 3,
        "DeadlockRetryCount": 4,
        "DeadlockRetryInterval": 1000
 }
----------------------------------------

# AD連携用ファイル
$ vi pleasanter/Authentication.json
----------------------------------------
{
    "Provider": "LDAP+Local",
    "ServiceId": null,
    "ExtensionUrl": null,
    "RejectUnregisteredUser": false,
    "LdapParameters": [
        {
            "LdapSearchRoot": "LDAP:\/\/ad-srv-name.yourdomain.local\/dc=yourdomain,dc=local",
            "LdapSearchProperty": "sAMAccountName",
            "NetBiosDomainName": "YOURDOMAIN",
            "LdapTenantId": 1,
            "LdapDeptCode": "department",
            "LdapDeptCodePattern": null,
            "LdapDeptName": "sn",
            "LdapDeptNamePattern": null,
            "LdapUserCode": "title",
            "LdapUserCodePattern": null,
            "LdapFirstName": "givenName",
            "LdapFirstNamePattern": null,
            "LdapLastName": "sn",
            "LdapLastNamePattern": null,
            "LdapMailAddress": "mail",
            "LdapMailAddressPattern": null,
            "LdapSyncPatterns": [
                "(&(ObjectCategory=User)(ObjectClass=Person))"
            ],
            "LdapExcludeAccountDisabled": true,
            "AutoDisable": true,
            "AutoEnable": true,
            "LdapSyncUser": "Administrator@yourdomain.local",
            "LdapSyncPassword": "YourPassword"
        }
    ]
}
----------------------------------------
※前提条件:AD登録時に以下の項目を設定しておく。ADのアトリビュートを参照して設定が必要
propertyName: departmentNumber ⇒  部署                               
propertyName: department ⇒ 会社名                                           
propertyName: employeeNumber ⇒ 役職


# DockerFile修正
$ vi pleasanter/Dockerfilen
----------------------------------------
WORKDIR /home/Pleasanter.NetCore
COPY supervisord.conf /usr/local/etc/supervisord.conf
COPY Rds.json Implem.Pleasanter.NetCore/App_Data/Parameters/Rds.json
# ↓追記
COPY Authentication.json Implem.Pleasanter.NetCore/App_Data/Parameters/Authentication.json
COPY pleasanter.sh cmdnetcore/pleasanter.sh
~以下略~
----------------------------------------

$ vi postgres/Dockerfile
-----------------------------
FROM postgres:13-alpine   #←13に修正
ENV LANG ja_JP.utf8

# バックアップ用のディレクトリを生成しておく
RUN mkdir -p /var/lib/postgresql/arclog/ &&\
    chmod 777 /var/lib/postgresql/arclog/

# timezone setting
RUN apk --no-cache add tzdata && \
    cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
    apk del tzdata
-----------------------------

# Docker起動
$ docker-compose up -d

# docker-compose起動後にDBの初期化が必要
$ docker exec -it pleasanter_pleasanter-web_1 cmdnetcore/codedefiner.sh


◆参考サイト

・Pleasanter Docker

https://pleasanter.hatenablog.jp/entry/2019/04/08/191954

https://github.com/yamada28go/pleasanter-docker-PostgreSQL/tree/ssl

https://qiita.com/yamada28go/items/3ebd4ed43e97cf3ca0e5

https://qiita.com/coleyon/items/8ca7830cdb0515f370de

https://qiita.com/twintee/items/73cf3887a79921609536

https://qiita.com/ta24toy27/items/986b3057e08f3da2fc06

https://pleasanter.org/manual/install-ubuntu-postgresql

・pleasanterログ確認方法

https://www.ceccs.co.jp/archives/blog/%E3%80%90%E3%83%97%E3%83%AA%E3%82%B6%E3%83%B3%E3%82%BF%E3%83%BC%E3%80%91-%E7%AC%AC50%E5%9B%9E%EF%BC%89%E5%95%8F%E9%A1%8C%E7%99%BA%E7%94%9F%E6%99%82%E3%81%AE%E8%AA%BF%E6%9F%BB%E6%96%B9%E6%B3%95

https://pleasanter.org/manual/faq-view-syslogs

・ActiveDirectoryユーザ属性参照方法

https://milestone-of-se.nesuke.com/sv-advanced/activedirectory/attribute-editor/

https://gihyo.jp/admin/serial/01/ad2010/0001?page=2

・GitHash取得方法

https://atmarkit.itmedia.co.jp/ait/articles/2005/01/news024.html

https://qiita.com/chihiro/items/cba40015b1aa2c73b78a

https://scrapbox.io/tamago324vim/git_%E3%82%BF%E3%82%B0%E3%81%8B%E3%82%89%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E5%80%A4%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B

・RedmineのAD連携

https://rin-ka.net/redmine-ldap/

https://qiita.com/takiru/items/1b1f2328ddfcdf12ac92


Kintoneがかなりいいできなのであえてプリザンターを使う理由はないかとは思うのですが、EXCELライクな見た目なので結構、とっつきやすいのとクラウドやっててインターネットとまったら業務が止まるの嫌だとかいう特殊なとこならまぁオンプレサーバにのっけて動かすというのもアリではないかと思います。(あまりおススメはしませんが・・・・


ちなみにクラウドでも提供しています。Pleasanterの方が安価だったりしますw

https://kintone.cybozu.co.jp/price/

https://pleasanter.net/


サポート外とはなるものの自社に鯖立ててソースコード修正すれば色々とできるので僕の様にヨワヨワでない人は修正して思うがままにできるのではないでしょうか。

https://github.com/Implem/Implem.Pleasanter.NetCore


次はWordPressとsamba-adとを認証連携させてみたいができるんかなぁ・・・

ゆくゆくは全部SSOにしたい。


一応GitHub上げました

https://github.com/Otazoman/DockerPleasanter

コメント

このブログの人気の投稿

証券外務員1種勉強(計算式暗記用メモ)

GASでGoogleDriveのサブフォルダとファイル一覧を出力する

マクロ経済学(IS-LM分析)