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://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
・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://github.com/Implem/Implem.Pleasanter.NetCore
次はWordPressとsamba-adとを認証連携させてみたいができるんかなぁ・・・
ゆくゆくは全部SSOにしたい。
一応GitHub上げました
コメント