- 由 zhongluqiang创建, 最后修改于8月 09, 2023
参考文档
安装概述
基于docker-compose安装,简化运维,方便数据迁移和备份,提升安全。
通过端口映射将Gitlab的http服务绑定定到宿主机本地3000端口,将ssh服务绑定到外网22端口(需要先修改用于ssh登录的openSSH端口),不使用Gitlab的https服务。
通过宿主机Nginx反向代理http服务,并使用https进行访问,需要提前设置git.midlane.top二级域名解析,以及申请对应的HTTPS证书。(腾讯云免费的HTTPS证书只能和一个域名绑定,能够绑定多域名和泛域名的证书要收费)。
修改openSSH端口
编辑/etc/ssh/sshd_config,将#Port 22这行注释取消,并修改成指定的端口即可,保存后重启ssh服务使参数生效(/etc/init.d/ssh restart或service ssh restart)。
添加域名解析和申请HTTPS证书
添加一条git的A记录,如下:
添加之后可以解析二级域名git.midlane.top。
接下来为该域名申请HTTPS证书,在“我的证书”页面选择免费证书进行申请即可。
docker-compose安装Gitlab
使用下面的docker-compose.yml进行安装:
version: "3" networks: gitlab: external: false services: gitlab: # 这里替换成指定的版本 image: gitlab/gitlab-ce:xx.xx.xx-ce.0 container_name: gitlab hostname: git.midlane.top restart: "always" ports: - "127.0.0.1:3000:80" - "22:22" networks: - gitlab volumes: - ./config:/etc/gitlab - ./logs:/var/log/gitlab - ./data:/var/opt/gitlab - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://git.midlane.top' gitlab_rails['time_zone'] = 'Asia/Shanghai' # 容器内nginx仍然使用80端口, 不监听https nginx['listen_port'] = 80 nginx['listen_https'] = false # 关闭电子邮件相关功能 gitlab_rails['smtp_enable'] = false gitlab_rails['gitlab_email_enabled'] = false gitlab_rails['incoming_email_enabled'] = false # 禁用 PUMA 集群模式 puma['worker_processes'] = 0 # 降低后台守护进程并发数 sidekiq['max_concurrency'] = 10 # 关闭监控 prometheus_monitoring['enable'] = false alertmanager['enable'] = false node_exporter['enable'] = false redis_exporter['enable'] = false postgres_exporter['enable'] = false pgbouncer_exporter['enable'] = false gitlab_exporter['enable'] = false grafana['enable'] = false sidekiq['metrics_enabled'] = false # 关闭Gitlab Pages gitlab_pages['enable'] = false pages_nginx['enable'] = false # 关闭容器仓库功能 gitlab_rails['gitlab_default_projects_features_container_registry'] = false gitlab_rails['registry_enabled'] = false registry['enable'] = false registry_nginx['enable'] = false # 包仓库、依赖管理 gitlab_rails['packages_enabled'] = false gitlab_rails['dependency_proxy_enabled'] = false # Usage Statistics gitlab_rails['usage_ping_enabled'] = false gitlab_rails['sentry_enabled'] = false grafana['reporting_enabled'] = false # GitLab KAS gitlab_kas['enable'] = false gitlab_rails['gitlab_kas_enabled'] = false # Terraform gitlab_rails['terraform_state_enabled'] = false # Kerberos 文档说EE only,但是默认值为 true gitlab_rails['kerberos_enabled'] = false # Sentinel sentinel['enable'] = false # Mattermost mattermost['enable'] = false mattermost_nginx['enable'] = false gitlab_ci['gitlab_ci_all_broken_builds'] = false gitlab_ci['gitlab_ci_add_pusher'] = false
相关命令:
- docker-compose up -d:启动容器并在后台运行,会先拉取镜像。
- docker-compose logs -f:查看容器日志。
- docker-compose down:关闭容器。
- docker-compose restart:重启容器。
- docker exec -it gitlab bash:进入容器命令行进行交互操作。
容器运行之后Gitlab的配置文件位于宿主机的./config/gitlab.rb,修改该配置文件后,需要进入容器内部执行gitlab-ctl reconfigure使配置生效。(考虑移植性,建议通过docker-compose传递环境变量的方式来修改配置。)
配置Nginx反向代理并启用HTTPS
修改Nginx配置文件,新增以下虚拟主机部分:
server { listen 443 ssl; server_name git.midlane.top; ssl_certificate /root/nginx/key/Nginx/git.server.crt; ssl_certificate_key /root/nginx/key/Nginx/git.server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; proxy_buffer_size 128k; proxy_buffers 32 128k; proxy_busy_buffers_size 128k; client_max_body_size 512m; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:3000; } }
另外还需要将http请求全部重定向到https,可以使用以下配置(这条配置是针对整个站点,只需要一个即可):
server { listen 80; server_name midlane.top; return 301 https://$host$request_uri; .... }
注意事项
- 关于docker-compose.yml,如果设置
external_url 'http://git.midlane.top:3000'
,那么容器内Gitlab自带的Nginx也会监听3000端口,要通过nginx['listen_port'] = 80
将其改成80端口,否则端口映射是不对的。
- 无标签