目前Synology已經將Gitlab移除維護名單之外。依照很多不同的文章都說明要在Synology NAS上架設Gitlab,最簡單的方式還是採用Docker進行。但Synology的docker只能跑在x86系列的機器上,所以就只能購買plus系列的機器。現在就假設大家都已經有Synology的plus系列的NAS,並且已經安裝好docker。
設定LDAP帳號系統:
方法可以參考: http://murmur.markliou.tw/2022/11/synology-ldap-server-ubuntu-ldap-client.html
上半部設定LDAP的方式。
使用環境設定如下:
- 使用Synology LDAP service
- 透過Docker架設gitlab
- 最終目標為在Synology NAS上架設Gitlab(使用Docker),並經由Webstation的reverse proxy將服務導至gitlab上。(需搭配DNS)
Gitlab安裝:
假設已經完成gitlab的docker架設。使用的版本是 gitlab/gitlab-ce:15.6.2-ce.0。Gitlab在使用上有幾個比較重要的Data需要保留,分別是data、config、logs,詳細掛載方式可以參考官方文件。以下還是提供官方建議的docker指令下法:
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ee:latest
不過在synology的Docker設定上就需要透過GUI進行。不難操作,就先額外開三個資料夾然後到設定中進行掛載。如果還是不清楚也可以參考其他人的文章。
Gitlab設定檔:
主要設定檔放在 /etc/gitlab/gitlab.rb 。對應到docker掛載folder就應該落在config資料夾中。
找到以下幾行進行修改:
gitlab_rails['ldap_servers'] = {
'main' => {
'label' => 'LDAP',
'host' => '192.168.81.51',
'port' => 389,
'uid' => 'cn',
'encryption' => 'plain',
'verify_certificates' => false,
'bind_dn' => 'uid=root,cn=users,dc=cri,dc=lab',
'password' => '????????',
'timeout' => 10,
'active_directory' => false,
'allow_username_or_email_login' => true,
'block_auto_created_users' => false,
'base' => 'dc=cri,dc=lab',
'user_filter' => '',
'lowercase_usernames' => false,
# EE Only
'group_base' => '',
'admin_group' => '',
'external_groups' => [],
'sync_ssh_keys' => false
}
}
其中:
- host是LDAP server的位置
- port是LDAP對應的port,389是不加密,636就是加密。我的server是設定不加密,因此用389。
- uid: 這邊是決定user在哪一層。Synology是訂在層
- encryption是加密方式。我用的是不加密,因此是plain
- bind_dn就直接到synology的LDAP server上就有提供
- password是LDAP的密碼。
- active_directory是windows的AD格式,我用的是synology的openLDAP格式,所以AD這邊設定為false。
- base也用synology的LDAP server底下提供的就行了。
特殊設定的部分,就是要同步gitlab的LDAP權限。因為gitlab呼叫LDAP以後會把資訊站存。但是如果有人離開要把他的權限關閉,單純在LDAP server設定gitlab還是吃不到。必須要讓gitlab主動去跟LDAP server同步:
gitlab_rails['ldap_sync_worker_cron'] = "0 */12 * * *"
這樣就是12小時同步一次。詳細可以參考這邊。
reverse proxy:
位置在: 控制台 > 登入入口 > 進階
把原本的 domain name的443對應到docker開出來的port就可以了。
Reference:
https://docs.gitlab.com/ee/administration/auth/ldap/
https://docs.gitlab.com/ee/administration/auth/ldap/ldap_synchronization.html
https://www.796t.com/article.php?id=100546
沒有留言:
張貼留言