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上げました
コメント