Thicket data repository for the EEG
1{
2 "id": "https://mort.io/blog/lab-gitlab/",
3 "title": "Lab GitLab",
4 "link": "https://mort.io/blog/lab-gitlab/",
5 "updated": "2017-04-19T00:00:00",
6 "published": "2017-04-19T00:00:00",
7 "summary": "<p>Recently had cause to do this as part of the <a href=\"https://www.cl.cam.ac.uk/research/srg/\">SRG\u2019s</a> and <a href=\"https://ocamllabs.io/\">OCaml Labs</a>\ninfrastructure. Thought it might be useful to make some notes, so here they are!\nAssuming your local <code>sys-admin</code> has kindly created you a suitable VM running\nUbuntu with login credentials, etc, read on\u2026</p>\n<p>Note that several commands that follow must be run as <code>root</code>, via use of <code>sudo</code>\nbelow. Given that, think twice before just cutting and pasting them in,\nobviously\u2026 And I am not held responsible for anything either way!</p>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#install-docker\">Install Docker</a></h2>\n<p>On a new Ubuntu stretch/sid (testing) VM:</p>\n<pre><code><span><span><span>$</span></span><span> lsb_release<span><span> -</span>drc</span></span>\n</span><span><span><span>Description:</span></span><span>\tUbuntu 16.04.1 LTS</span>\n</span><span><span><span>Release:</span></span><span>\t16.04</span>\n</span><span><span><span>Codename:</span></span><span>\txenial</span>\n</span></code></pre>\n<p>Next, install up-to-date <a href=\"https://docker.com/\">Docker</a>:</p>\n<pre><code><span><span><span>sudo</span></span><span> apt-get install apt-transport-https ca-certificates</span>\n</span><span><span><span>apt-key</span></span><span> adv<span><span> --</span>keyserver</span> hkp://p80.pool.sks-keyservers.net:80 <span>\\\n</span></span></span><span><span><span><span> --</span>recv-keys</span> 58118E89F3A912897C070ADBF76221572C52609D</span>\n</span><span><span><span>sudo</span></span><span> echo <span><span>"</span>deb https://apt.dockerproject.org/repo debian-stretch main<span>"</span></span> <span>\\\n</span></span></span><span><span> <span>></span> /etc/apt/sources.list.d/docker.list</span>\n</span><span><span><span>sudo</span></span><span> apt-get update</span>\n</span><span><span><span>sudo</span></span><span> apt-get install<span><span> -</span>y</span> docker-engine</span>\n</span></code></pre>\n<p>Tweak the <code>systemd</code> <a href=\"https://docker.com/\">Docker</a> configuration by adding a fragment to point\nall <a href=\"https://docker.com/\">Docker</a> to the <code>/data</code> partition, lest the root partition <code>/</code> fill:</p>\n<pre><code><span><span><span>cat</span></span><span> <span>></span> /etc/systemd/system/docker.service.d/data-disk.conf <span><span><<</span><span>EOF</span></span><span>\n</span></span></span><span><span><span>[Service]\n</span></span></span><span><span><span>ExecStart=\n</span></span></span><span><span><span>ExecStart=/usr/bin/dockerd -H fd:// -g /data/docker\n</span></span></span><span><span><span><span>EOF</span></span></span>\n</span></code></pre>\n<p>Then start the <a href=\"https://docker.com/\">Docker</a> daemon and run <code>hello-world</code> just to check all is\nwell:</p>\n<pre><code><span><span><span>sudo</span></span><span> systemctl daemon-reload</span>\n</span><span><span><span>sudo</span></span><span> service docker start</span>\n</span></code></pre>\n<p>Finally, test the install by running <code>hello-world</code>:</p>\n<pre><code><span><span><span>$</span></span><span> docker run hello-world</span>\n</span><span>\n</span><span><span><span>Hello</span></span><span> from Docker!</span>\n</span><span><span><span>This</span></span><span> message shows that your installation appears to be working correctly.</span>\n</span><span>\n</span><span><span><span>To</span></span><span> generate this message, Docker took the following steps:</span>\n</span><span> <span><span>1.</span></span><span> The Docker client contacted the Docker daemon.</span>\n</span><span> <span><span>2.</span></span><span> The Docker daemon pulled the <span><span>"</span>hello-world<span>"</span></span> image from the Docker Hub.</span>\n</span><span> <span><span>3.</span></span><span> The Docker daemon created a new container from that image which runs the</span>\n</span><span> <span><span>executable</span></span><span> that produces the output you are currently reading.</span>\n</span><span> <span><span>4.</span></span><span> The Docker daemon streamed that output to the Docker client, which sent it</span>\n</span><span> <span><span>to</span></span><span> your terminal.</span>\n</span><span>\n</span><span><span><span>To</span></span><span> try something more ambitious, you can run an Ubuntu container with:</span>\n</span><span> <span><span>$</span></span><span> docker run<span><span> -</span>it</span> ubuntu bash</span>\n</span><span>\n</span><span><span><span>Share</span></span><span> images, automate workflows, and more with a free Docker Hub account:</span>\n</span><span> <span><span>https://hub.docker.com</span></span>\n</span><span>\n</span><span><span><span>For</span></span><span> more examples and ideas, visit:</span>\n</span><span> <span><span>https://docs.docker.com/engine/userguide/</span></span>\n</span></code></pre>\n<p>If appropriate, you may also wish to add yourself to the <code>docker</code> user group:</p>\n<pre><code><span><span><span>sudo</span></span><span> usermod<span><span> -</span>aG</span> docker <span><span>$</span><span>(</span><span><span>whoami</span></span><span>)</span></span></span>\n</span></code></pre>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#gitlab\">GitLab</a></h2>\n<p>Assuming you have rights to run <code>docker</code>, install and run Gitlab-CE:</p>\n<pre><code><span><span>S</span><span>=</span><span>128.232.xxx.yyy</span>\n</span><span><span>H</span><span>=</span><span>gitlab.srg.cl.cam.ac.uk</span>\n</span><span><span><span>docker</span></span><span> run<span><span> --</span>detach</span> <span>\\\n</span></span></span><span><span><span><span> --</span>hostname</span> <span><span>$</span><span>H</span></span> <span>\\\n</span></span></span><span><span><span><span> --</span>publish</span> <span><span>$</span><span>S</span></span>:443:443 <span>\\\n</span></span></span><span><span><span><span> --</span>publish</span> <span><span>$</span><span>S</span></span>:80:80 <span>\\\n</span></span></span><span><span><span><span> --</span>publish</span> <span><span>$</span><span>S</span></span>:2222:22 <span>\\\n</span></span></span><span><span><span><span> --</span>name</span> gitlab <span>\\\n</span></span></span><span><span><span><span> --</span>restart</span> always <span>\\\n</span></span></span><span><span><span><span> --</span>volume</span> /data/gitlab/config:/etc/gitlab <span>\\\n</span></span></span><span><span><span><span> --</span>volume</span> /data/gitlab/logs:/var/log/gitlab <span>\\\n</span></span></span><span><span><span><span> --</span>volume</span> /data/gitlab/data:/var/opt/gitlab <span>\\\n</span></span></span><span><span><span><span> --</span>volume</span> /data/gitlab/backups:/var/opt/gitlab/backups <span>\\\n</span></span></span><span><span><span><span> --</span>volume</span> /data/gitlab/sync:/var/opt/gitlab/sync <span>\\\n</span></span></span><span><span><span><span> --</span>env</span> HOST_UID=<span><span>$</span><span>$</span></span>(id<span><span> -</span>u</span></span><span></span>) <span><span>--env</span></span><span> HOST_GID=<span><span>$</span><span>$</span></span>(id<span><span> -</span>g</span></span><span></span>) <span>\\\n</span></span><span> <span><span>mor1/gitlab-ce-cron:latest</span></span>\n</span></code></pre>\n<p>\u2026or use the <code>make start</code> target in the\n<a href=\"https://github.com/mor1/dockerfiles/blob/master/gitlab-ce-cron/Makefile\">Makefile</a>\nin the related <a href=\"https://github.com/mor1/dockerfiles/tree/master/gitlab-ce-cron\">GitHub\nrepo</a>.</p>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#tls-certificates\">TLS Certificates</a></h2>\n<p>Self-certified certificates:</p>\n<pre><code><span><span><span>openssl</span></span><span> req<span><span> -</span>nodes</span><span><span> -</span>newkey</span> rsa:2048<span><span> -</span>keyout</span> gitlab.srg.cl.cam.ac.uk.key<span><span> -</span>out</span> gitlab.srg.cl.cam.ac.uk.csr</span>\n</span><span><span><span>cd</span></span><span> ssl</span>\n</span><span><span><span>chmod</span></span><span> 600 <span>*</span></span>\n</span><span><span><span>openssl</span></span><span> x509<span><span> -</span>req</span><span><span> -</span>days</span> 1460<span><span> -</span>in</span> gitlab.srg.cl.cam.ac.uk.csr<span><span> -</span>signkey</span> gitlab.srg.cl.cam.ac.uk.key<span><span> -</span>out</span> gitlab.srg.cl.cam.ac.uk.crt</span>\n</span></code></pre>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#run-backups\">Run Backups</a></h2>\n<ul>\n<li><code>backup</code> script to create backup tarballs and extract</li>\n<li><code>sync</code> script to rsync extracted tarballs to filer</li>\n</ul>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#recovering-password\">Recovering Password</a></h2>\n<p>To change the <code>root</code> password you need to use the Ruby-on-Rails console to\naccess the relevant object, modify it, and save it back:</p>\n<pre><code><span>gitlab<span>-</span>rails console production\n</span><span>\n</span><span>irb<span>(</span>main<span>)</span><span>:</span><span><span>0</span>01</span><span>:</span><span>0</span><span>></span> user <span>=</span> <span>User</span><span>.</span>where<span>(</span><span>id<span>:</span></span> <span>1</span><span>)</span><span>.</span>first\n</span><span><span>=></span> <span><span>#</span><User id: 1, email: "admin@example.com", created_at: "2016-11-16 22:57:21", updated_at: "2016-12-05 23:42:50", name: "Administrator", admin: true, projects_limit: 10, skype: "", linkedin: "", twitter: "", authentication_token: "secrettoken", theme_id: 2, bio: nil, username: "root", can_create_group: true, can_create_team: false, state: "active", color_scheme_id: 1, password_expires_at: nil, created_by_id: nil, last_credential_check_at: nil, avatar: nil, hide_no_ssh_key: false, website_url: "", notification_email: "admin@example.com", hide_no_password: false, password_automatically_set: false, location: nil, encrypted_otp_secret: nil, encrypted_otp_secret_iv: nil, encrypted_otp_secret_salt: nil, otp_required_for_login: false, otp_backup_codes: nil, public_email: "", dashboard: 0, project_view: 0, consumed_timestep: nil, layout: 0, hide_project_limit: false, otp_grace_period_started_at: nil, ldap_email: false, external: false, organization: nil>\n</span></span><span>irb<span>(</span>main<span>)</span><span>:</span><span><span>0</span>02</span><span>:</span><span>0</span><span>></span> user<span>.</span>password <span>=</span> <span><span><span>'</span>secretpassword<span>'</span></span></span>\n</span><span><span>=></span> <span><span><span>"</span>secretpassword<span>"</span></span></span>\n</span><span>irb<span>(</span>main<span>)</span><span>:</span><span><span>0</span>03</span><span>:</span><span>0</span><span>></span> user<span>.</span>password_confirmation <span>=</span> <span><span><span>'</span>secretpassword<span>'</span></span></span>\n</span><span><span>=></span> <span><span><span>"</span>secretpassword<span>"</span></span></span>\n</span><span>irb<span>(</span>main<span>)</span><span>:</span><span><span>0</span>04</span><span>:</span><span>0</span><span>></span> user<span>.</span>save!\n</span><span><span>Enqueued</span> <span>ActionMailer</span><span>::</span>DeliveryJob <span>(</span><span>Job</span> <span>ID<span>:</span></span> 5f74573d<span>-</span>dfa2<span>-</span><span>4778</span><span>-</span>b365<span>-</span>cbebd88e454e<span>)</span> to <span>Sidekiq</span><span>(</span>mailers<span>)</span> with <span>arguments<span>:</span></span> <span><span><span>"</span>DeviseMailer<span>"</span></span></span><span>,</span> <span><span><span>"</span>password_change<span>"</span></span></span><span>,</span> <span><span><span>"</span>deliver_now<span>"</span></span></span><span>,</span> <span>gid<span>:</span></span><span><span><span>/</span><span>/</span></span></span>gitlab<span>/</span><span>User</span><span>/</span><span>1</span>\n</span><span><span>=></span> <span>true</span>\n</span><span>irb<span>(</span>main<span>)</span><span>:</span><span><span>0</span>05</span><span>:</span><span>0</span><span>></span>\n</span><span>\n</span><span>gitlab<span>-</span>ctl reconfigure\n</span></code></pre>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#hook-up-to-github\">Hook up to GitHub</a></h2>\n<p>Per\n<a href=\"https://docs.gitlab.com/ce/integration/omniauth.html#initial-omniauth-configuration\">https://docs.gitlab.com/ce/integration/omniauth.html#initial-omniauth-configuration</a> and\n<a href=\"https://docs.gitlab.com/ce/integration/github.html\">https://docs.gitlab.com/ce/integration/github.html</a>:</p>\n<p>Edit via <code>sudo docker exec -it gitlab /bin/bash</code>:</p>\n<pre><code><span><span><span>root@gitlab:/#</span></span><span> vi /etc/gitlab/gitlab.rb</span>\n</span></code></pre>\n<pre><code><span>gitlab_rails<span>[</span><span><span><span>'</span>omniauth_enabled<span>'</span></span></span><span>]</span> <span>=</span> <span>true</span>\n</span><span>gitlab_rails<span>[</span><span><span><span>'</span>omniauth_allow_single_sign_on<span>'</span></span></span><span>]</span> <span>=</span> <span>[</span><span><span><span>'</span>saml<span>'</span></span></span><span>,</span> <span><span><span>'</span>github<span>'</span></span></span><span>]</span>\n</span><span>gitlab_rails<span>[</span><span><span><span>'</span>omniauth_block_auto_created_users<span>'</span></span></span><span>]</span> <span>=</span> <span>true</span>\n</span></code></pre>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#email\">Email</a></h2>\n<p>Use SMTP via <ppsw.cam.ac.uk>, for which the from address must have a valid <code>MX</code>\nrecord <strong>and</strong> not be under <cam.ac.uk> per\n<a href=\"http://help.uis.cam.ac.uk/email-telephony-and-collaboration/email/technical/sending\">http://help.uis.cam.ac.uk/email-telephony-and-collaboration/email/technical/sending</a>.</p>\n<p>Configuration can be tested via the console:</p>\n<pre><code><span><span>Notify</span><span>.</span>test_email<span>(</span><span><span><span>'</span>your@email.address, <span>'</span></span></span><span>Hello</span> <span>World</span><span><span><span>'</span>, <span>'</span></span></span><span>This</span> is a <span>test</span> message<span><span><span>'</span>).deliver_now\n</span></span></span></code></pre>",
8 "content": "<p>Recently had cause to do this as part of the <a href=\"https://www.cl.cam.ac.uk/research/srg/\">SRG\u2019s</a> and <a href=\"https://ocamllabs.io/\">OCaml Labs</a>\ninfrastructure. Thought it might be useful to make some notes, so here they are!\nAssuming your local <code>sys-admin</code> has kindly created you a suitable VM running\nUbuntu with login credentials, etc, read on\u2026</p>\n<p>Note that several commands that follow must be run as <code>root</code>, via use of <code>sudo</code>\nbelow. Given that, think twice before just cutting and pasting them in,\nobviously\u2026 And I am not held responsible for anything either way!</p>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#install-docker\">Install Docker</a></h2>\n<p>On a new Ubuntu stretch/sid (testing) VM:</p>\n<pre><code><span><span><span>$</span></span><span> lsb_release<span><span> -</span>drc</span></span>\n</span><span><span><span>Description:</span></span><span>\tUbuntu 16.04.1 LTS</span>\n</span><span><span><span>Release:</span></span><span>\t16.04</span>\n</span><span><span><span>Codename:</span></span><span>\txenial</span>\n</span></code></pre>\n<p>Next, install up-to-date <a href=\"https://docker.com/\">Docker</a>:</p>\n<pre><code><span><span><span>sudo</span></span><span> apt-get install apt-transport-https ca-certificates</span>\n</span><span><span><span>apt-key</span></span><span> adv<span><span> --</span>keyserver</span> hkp://p80.pool.sks-keyservers.net:80 <span>\\\n</span></span></span><span><span><span><span> --</span>recv-keys</span> 58118E89F3A912897C070ADBF76221572C52609D</span>\n</span><span><span><span>sudo</span></span><span> echo <span><span>"</span>deb https://apt.dockerproject.org/repo debian-stretch main<span>"</span></span> <span>\\\n</span></span></span><span><span> <span>></span> /etc/apt/sources.list.d/docker.list</span>\n</span><span><span><span>sudo</span></span><span> apt-get update</span>\n</span><span><span><span>sudo</span></span><span> apt-get install<span><span> -</span>y</span> docker-engine</span>\n</span></code></pre>\n<p>Tweak the <code>systemd</code> <a href=\"https://docker.com/\">Docker</a> configuration by adding a fragment to point\nall <a href=\"https://docker.com/\">Docker</a> to the <code>/data</code> partition, lest the root partition <code>/</code> fill:</p>\n<pre><code><span><span><span>cat</span></span><span> <span>></span> /etc/systemd/system/docker.service.d/data-disk.conf <span><span><<</span><span>EOF</span></span><span>\n</span></span></span><span><span><span>[Service]\n</span></span></span><span><span><span>ExecStart=\n</span></span></span><span><span><span>ExecStart=/usr/bin/dockerd -H fd:// -g /data/docker\n</span></span></span><span><span><span><span>EOF</span></span></span>\n</span></code></pre>\n<p>Then start the <a href=\"https://docker.com/\">Docker</a> daemon and run <code>hello-world</code> just to check all is\nwell:</p>\n<pre><code><span><span><span>sudo</span></span><span> systemctl daemon-reload</span>\n</span><span><span><span>sudo</span></span><span> service docker start</span>\n</span></code></pre>\n<p>Finally, test the install by running <code>hello-world</code>:</p>\n<pre><code><span><span><span>$</span></span><span> docker run hello-world</span>\n</span><span>\n</span><span><span><span>Hello</span></span><span> from Docker!</span>\n</span><span><span><span>This</span></span><span> message shows that your installation appears to be working correctly.</span>\n</span><span>\n</span><span><span><span>To</span></span><span> generate this message, Docker took the following steps:</span>\n</span><span> <span><span>1.</span></span><span> The Docker client contacted the Docker daemon.</span>\n</span><span> <span><span>2.</span></span><span> The Docker daemon pulled the <span><span>"</span>hello-world<span>"</span></span> image from the Docker Hub.</span>\n</span><span> <span><span>3.</span></span><span> The Docker daemon created a new container from that image which runs the</span>\n</span><span> <span><span>executable</span></span><span> that produces the output you are currently reading.</span>\n</span><span> <span><span>4.</span></span><span> The Docker daemon streamed that output to the Docker client, which sent it</span>\n</span><span> <span><span>to</span></span><span> your terminal.</span>\n</span><span>\n</span><span><span><span>To</span></span><span> try something more ambitious, you can run an Ubuntu container with:</span>\n</span><span> <span><span>$</span></span><span> docker run<span><span> -</span>it</span> ubuntu bash</span>\n</span><span>\n</span><span><span><span>Share</span></span><span> images, automate workflows, and more with a free Docker Hub account:</span>\n</span><span> <span><span>https://hub.docker.com</span></span>\n</span><span>\n</span><span><span><span>For</span></span><span> more examples and ideas, visit:</span>\n</span><span> <span><span>https://docs.docker.com/engine/userguide/</span></span>\n</span></code></pre>\n<p>If appropriate, you may also wish to add yourself to the <code>docker</code> user group:</p>\n<pre><code><span><span><span>sudo</span></span><span> usermod<span><span> -</span>aG</span> docker <span><span>$</span><span>(</span><span><span>whoami</span></span><span>)</span></span></span>\n</span></code></pre>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#gitlab\">GitLab</a></h2>\n<p>Assuming you have rights to run <code>docker</code>, install and run Gitlab-CE:</p>\n<pre><code><span><span>S</span><span>=</span><span>128.232.xxx.yyy</span>\n</span><span><span>H</span><span>=</span><span>gitlab.srg.cl.cam.ac.uk</span>\n</span><span><span><span>docker</span></span><span> run<span><span> --</span>detach</span> <span>\\\n</span></span></span><span><span><span><span> --</span>hostname</span> <span><span>$</span><span>H</span></span> <span>\\\n</span></span></span><span><span><span><span> --</span>publish</span> <span><span>$</span><span>S</span></span>:443:443 <span>\\\n</span></span></span><span><span><span><span> --</span>publish</span> <span><span>$</span><span>S</span></span>:80:80 <span>\\\n</span></span></span><span><span><span><span> --</span>publish</span> <span><span>$</span><span>S</span></span>:2222:22 <span>\\\n</span></span></span><span><span><span><span> --</span>name</span> gitlab <span>\\\n</span></span></span><span><span><span><span> --</span>restart</span> always <span>\\\n</span></span></span><span><span><span><span> --</span>volume</span> /data/gitlab/config:/etc/gitlab <span>\\\n</span></span></span><span><span><span><span> --</span>volume</span> /data/gitlab/logs:/var/log/gitlab <span>\\\n</span></span></span><span><span><span><span> --</span>volume</span> /data/gitlab/data:/var/opt/gitlab <span>\\\n</span></span></span><span><span><span><span> --</span>volume</span> /data/gitlab/backups:/var/opt/gitlab/backups <span>\\\n</span></span></span><span><span><span><span> --</span>volume</span> /data/gitlab/sync:/var/opt/gitlab/sync <span>\\\n</span></span></span><span><span><span><span> --</span>env</span> HOST_UID=<span><span>$</span><span>$</span></span>(id<span><span> -</span>u</span></span><span></span>) <span><span>--env</span></span><span> HOST_GID=<span><span>$</span><span>$</span></span>(id<span><span> -</span>g</span></span><span></span>) <span>\\\n</span></span><span> <span><span>mor1/gitlab-ce-cron:latest</span></span>\n</span></code></pre>\n<p>\u2026or use the <code>make start</code> target in the\n<a href=\"https://github.com/mor1/dockerfiles/blob/master/gitlab-ce-cron/Makefile\">Makefile</a>\nin the related <a href=\"https://github.com/mor1/dockerfiles/tree/master/gitlab-ce-cron\">GitHub\nrepo</a>.</p>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#tls-certificates\">TLS Certificates</a></h2>\n<p>Self-certified certificates:</p>\n<pre><code><span><span><span>openssl</span></span><span> req<span><span> -</span>nodes</span><span><span> -</span>newkey</span> rsa:2048<span><span> -</span>keyout</span> gitlab.srg.cl.cam.ac.uk.key<span><span> -</span>out</span> gitlab.srg.cl.cam.ac.uk.csr</span>\n</span><span><span><span>cd</span></span><span> ssl</span>\n</span><span><span><span>chmod</span></span><span> 600 <span>*</span></span>\n</span><span><span><span>openssl</span></span><span> x509<span><span> -</span>req</span><span><span> -</span>days</span> 1460<span><span> -</span>in</span> gitlab.srg.cl.cam.ac.uk.csr<span><span> -</span>signkey</span> gitlab.srg.cl.cam.ac.uk.key<span><span> -</span>out</span> gitlab.srg.cl.cam.ac.uk.crt</span>\n</span></code></pre>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#run-backups\">Run Backups</a></h2>\n<ul>\n<li><code>backup</code> script to create backup tarballs and extract</li>\n<li><code>sync</code> script to rsync extracted tarballs to filer</li>\n</ul>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#recovering-password\">Recovering Password</a></h2>\n<p>To change the <code>root</code> password you need to use the Ruby-on-Rails console to\naccess the relevant object, modify it, and save it back:</p>\n<pre><code><span>gitlab<span>-</span>rails console production\n</span><span>\n</span><span>irb<span>(</span>main<span>)</span><span>:</span><span><span>0</span>01</span><span>:</span><span>0</span><span>></span> user <span>=</span> <span>User</span><span>.</span>where<span>(</span><span>id<span>:</span></span> <span>1</span><span>)</span><span>.</span>first\n</span><span><span>=></span> <span><span>#</span><User id: 1, email: "admin@example.com", created_at: "2016-11-16 22:57:21", updated_at: "2016-12-05 23:42:50", name: "Administrator", admin: true, projects_limit: 10, skype: "", linkedin: "", twitter: "", authentication_token: "secrettoken", theme_id: 2, bio: nil, username: "root", can_create_group: true, can_create_team: false, state: "active", color_scheme_id: 1, password_expires_at: nil, created_by_id: nil, last_credential_check_at: nil, avatar: nil, hide_no_ssh_key: false, website_url: "", notification_email: "admin@example.com", hide_no_password: false, password_automatically_set: false, location: nil, encrypted_otp_secret: nil, encrypted_otp_secret_iv: nil, encrypted_otp_secret_salt: nil, otp_required_for_login: false, otp_backup_codes: nil, public_email: "", dashboard: 0, project_view: 0, consumed_timestep: nil, layout: 0, hide_project_limit: false, otp_grace_period_started_at: nil, ldap_email: false, external: false, organization: nil>\n</span></span><span>irb<span>(</span>main<span>)</span><span>:</span><span><span>0</span>02</span><span>:</span><span>0</span><span>></span> user<span>.</span>password <span>=</span> <span><span><span>'</span>secretpassword<span>'</span></span></span>\n</span><span><span>=></span> <span><span><span>"</span>secretpassword<span>"</span></span></span>\n</span><span>irb<span>(</span>main<span>)</span><span>:</span><span><span>0</span>03</span><span>:</span><span>0</span><span>></span> user<span>.</span>password_confirmation <span>=</span> <span><span><span>'</span>secretpassword<span>'</span></span></span>\n</span><span><span>=></span> <span><span><span>"</span>secretpassword<span>"</span></span></span>\n</span><span>irb<span>(</span>main<span>)</span><span>:</span><span><span>0</span>04</span><span>:</span><span>0</span><span>></span> user<span>.</span>save!\n</span><span><span>Enqueued</span> <span>ActionMailer</span><span>::</span>DeliveryJob <span>(</span><span>Job</span> <span>ID<span>:</span></span> 5f74573d<span>-</span>dfa2<span>-</span><span>4778</span><span>-</span>b365<span>-</span>cbebd88e454e<span>)</span> to <span>Sidekiq</span><span>(</span>mailers<span>)</span> with <span>arguments<span>:</span></span> <span><span><span>"</span>DeviseMailer<span>"</span></span></span><span>,</span> <span><span><span>"</span>password_change<span>"</span></span></span><span>,</span> <span><span><span>"</span>deliver_now<span>"</span></span></span><span>,</span> <span>gid<span>:</span></span><span><span><span>/</span><span>/</span></span></span>gitlab<span>/</span><span>User</span><span>/</span><span>1</span>\n</span><span><span>=></span> <span>true</span>\n</span><span>irb<span>(</span>main<span>)</span><span>:</span><span><span>0</span>05</span><span>:</span><span>0</span><span>></span>\n</span><span>\n</span><span>gitlab<span>-</span>ctl reconfigure\n</span></code></pre>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#hook-up-to-github\">Hook up to GitHub</a></h2>\n<p>Per\n<a href=\"https://docs.gitlab.com/ce/integration/omniauth.html#initial-omniauth-configuration\">https://docs.gitlab.com/ce/integration/omniauth.html#initial-omniauth-configuration</a> and\n<a href=\"https://docs.gitlab.com/ce/integration/github.html\">https://docs.gitlab.com/ce/integration/github.html</a>:</p>\n<p>Edit via <code>sudo docker exec -it gitlab /bin/bash</code>:</p>\n<pre><code><span><span><span>root@gitlab:/#</span></span><span> vi /etc/gitlab/gitlab.rb</span>\n</span></code></pre>\n<pre><code><span>gitlab_rails<span>[</span><span><span><span>'</span>omniauth_enabled<span>'</span></span></span><span>]</span> <span>=</span> <span>true</span>\n</span><span>gitlab_rails<span>[</span><span><span><span>'</span>omniauth_allow_single_sign_on<span>'</span></span></span><span>]</span> <span>=</span> <span>[</span><span><span><span>'</span>saml<span>'</span></span></span><span>,</span> <span><span><span>'</span>github<span>'</span></span></span><span>]</span>\n</span><span>gitlab_rails<span>[</span><span><span><span>'</span>omniauth_block_auto_created_users<span>'</span></span></span><span>]</span> <span>=</span> <span>true</span>\n</span></code></pre>\n<h2><a href=\"https://mort.io/blog/lab-gitlab/#email\">Email</a></h2>\n<p>Use SMTP via <ppsw.cam.ac.uk>, for which the from address must have a valid <code>MX</code>\nrecord <strong>and</strong> not be under <cam.ac.uk> per\n<a href=\"http://help.uis.cam.ac.uk/email-telephony-and-collaboration/email/technical/sending\">http://help.uis.cam.ac.uk/email-telephony-and-collaboration/email/technical/sending</a>.</p>\n<p>Configuration can be tested via the console:</p>\n<pre><code><span><span>Notify</span><span>.</span>test_email<span>(</span><span><span><span>'</span>your@email.address, <span>'</span></span></span><span>Hello</span> <span>World</span><span><span><span>'</span>, <span>'</span></span></span><span>This</span> is a <span>test</span> message<span><span><span>'</span>).deliver_now\n</span></span></span></code></pre>",
9 "content_type": "html",
10 "author": {
11 "name": "Unknown",
12 "email": null,
13 "uri": null
14 },
15 "categories": [],
16 "rights": null,
17 "source": "https://mort.io/atom.xml"
18}