Turns out gitlab just displays nginx error.log always when starting. So ssl certificate was already there and working. I still had problems configuring the port to work with jwilder nginx-proxy. So this is how my last config looks like and works:
symlink the .env with gitlab-docker$ln -s ../.env .env
official docker-compose.yml of nextcloud: ./docker-compose.yml
version: '2' services: proxy: image: jwilder/nginx-proxy container_name: proxy ports: - 80:80 - 443:443 volumes: - ./proxy/conf.d:/etc/nginx/conf.d - ./proxy/vhost.d:/etc/nginx/vhost.d - ./proxy/html:/usr/share/nginx/html - ./proxy/certs:/etc/nginx/certs:ro - /var/run/docker.sock:/tmp/docker.sock:ro networks: - proxy-tier restart: always letsencrypt-companion: image: alastaircoote/docker-letsencrypt-nginx-proxy-companion container_name: letsencrypt-companion volumes_from: - proxy volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./proxy/certs:/etc/nginx/certs:rw restart: always web: image: nginx container_name: nextcloud_webserver volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro links: - app - collabora volumes_from: - app environment: - VIRTUAL_HOST=$ - VIRTUAL_NETWORK=nginx-proxy - VIRTUAL_PORT=80 - LETSENCRYPT_HOST=$ - LETSENCRYPT_EMAIL=$ networks: - proxy-tier restart: always app: image: nextcloud:fpm container_name: nextcloud_fpm links: - db volumes: - ./nextcloud/apps:/var/www/html/apps - ./nextcloud/config:/var/www/html/config - ./nextcloud/data:/var/www/html/data networks: - proxy-tier restart: always db: image: mariadb container_name: db volumes: - ./nextcloud/db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=$ - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_PASSWORD=$ networks: - proxy-tier restart: always redis: image: redis container_name: redis networks: - proxy-tier restart: always collabora: image: collabora/code container_name: collabora cap_add: - MKNOD environment: - domain=$ networks: - proxy-tier restart: always networks: proxy-tier: external: name: nginx-proxy
./gitlab-docker/docker-compose.yml
version: '2' services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab restart: always hostname: $ environment: VIRTUAL_HOST: $ VIRTUAL_NETWORK: nginx-proxy VIRTUAL_PORT: 80 LETSENCRYPT_HOST: $ LETSENCRYPT_EMAIL: $ GITLAB_OMNIBUS_CONFIG: | external_url 'https://$' nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/key.pem" nginx['listen_port'] = 80 nginx['listen_https'] = false nginx['proxy_set_headers'] = { "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on" } # Add any other gitlab.rb configuration here, each on its own line ports: - '3022:22' volumes: - gitcerts:/etc/gitlab/ssl:ro - ../gitlab/config:/etc/gitlab - ../gitlab/logs:/var/log/gitlab - ../gitlab/data:/var/opt/gitlab networks: - proxy-tier networks: proxy-tier: external: name: nginx-proxy volumes: gitcerts: driver_opts: type: none device: /opt/nextcloud-docker/.examples/proxy/certs/$ o: bind
- Notice the named volume to access the certs for gitlab(
docker volume ls
to list volumes, anddocker volume inspect $name
to display the mountpoint, which in my case is/var/lib/docker/volumes/gitlabdocker_gitcerts/_data
). - Also notice the specific listen directives for gitlab, credits to those below.
Credits:
- https://gitlab.com/gitlab-org/omnibus-gitlab/issues/1307
- https://github.com/jwilder/nginx-proxy/issues/309#issuecomment-163556850 (for explaining how jwilder/nginx-proxy works)