<p>เนื่องจากได้กลับมาใช้ gitlab อีกครั้ง ก็เลยจะทำ backup ซะหน่อย ไปอ่านๆ doc มันดู ปรากฏว่า มัน bacup local ธรรมดาได้แล้ว ยังส่งขึนไปบน space ของ digitalocean ได้อีกด้วย</p>
<h2>มาเริ่มกันเลย</h2>
<p>เริ่มจาก ไปของ API key ของ Sapce ก่อน ไปที่หน้าเว็บ <a href="https://cloud.digitalocean.com/account/api/tokens">https://cloud.digitalocean.com/account/api/tokens</a> แล้วกดปุ่ม Generate New Key ได้เลยครับ มันจะได้ Key และ Secret มา ให้ก๊อปเก็บไว้ (รู้สึกว่า Secret จะดูไม่ได้อีกรอบนะครับ ต้อง เจนใหม่)</p>
<p>จากนั้นเปิดไฟล์ config gitlab ที่ <code>/etc/gitlab/gitlab.rb</code> แก้ตรง</p>
<pre class="language-bash"><code>gitlab_rails['backup_upload_connection'] = {
'provider' => 'AWS',
'region' => 'sgp1',
'aws_access_key_id' => '__API_KEY__',
'aws_secret_access_key' => '__API_SECRET__',
'endpoint' => 'https://sgp1.digitaloceanspaces.com'
}
gitlab_rails['backup_upload_remote_directory'] = '__NAME__'</code></pre>
<p>จุดสำคัญๆ มีดังนี้ครับ</p>
<ol>
<li>endpoint ตรงนี้ต้องไปดูที่ Space -> Setting ของเราว่า มันชี้ไปที่ไหน จากนั้นก็ก๊อปมาเลยแบบในรูป<br /><img src="/usercontents/image/NVZuaExnWHpTY1FvZUdndjZETklzUE1Id0tyODVJRkFiK3hHTlhmZWtoVTVsc3phNUE3dFowbDdSQ2htcjF4bWNyRGZvZ2oraUVYZW9QM3h2NjlZc1E9PQ,," /></li>
<li>เมื่อได้ endpoint แล้ว ตรง subdomain ข้างหน้าจะเป็น region ก็เอาไปใส่ให้ตรงกันครับ (อย่างในตัวอย่างมันคือ sgp1)</li>
<li>__API_KEY__ และ __API_SECRET__ ก็คือ อันที่เราได้มาจากการ Generate Key ในขั้นตอนก่อนหน้านี้</li>
<li>ตรง <code>backup_upload_remote_directory</code> อันนี้ ใส่ชื่อ Space ของเรา</li>
</ol>
<p>จากนั้น ก็สั่ง <code>gitlab-ctl reconfigure</code> เพื่อ restart gitlab</p>
<p>แล้วก็ลอง backup ดูด้วยคำสั่ง <code>gitlab-rake gitlab:backup:create</code> ถ้ามันใช้ได้ ก็จะขึ้นแบบนี้</p>
<p><img src="/usercontents/image/NVZuaExnWHpTY1FvZUdndjZETklzUE1Id0tyODVJRkFiK3hHTlhmZWtoVThKUXdjSWxJanpjMjYvN2ZGR0hxRTFhOHE1SjBmVGxJOTd0dG1TeHdzc3c9PQ,," /></p>
<h2>อยากอัพไปแล้วไปอยู่ใน Folder ที่ต้องการใน Space ทำไง</h2>
<p>คือไอ้ตอนแรก พอลองดู มันดันอัพไปที่ root ของ Space เรา ผมก็หาวิธีอยู่ตั้งนาน ไอ้ <code>backup_upload_remote_directory</code> ชื่อมันบอกว่า เป็น directory แต่จริงๆ ก็ไม่ใช่ มันคือ bucket name ต่างหาก จะใส่เป็น name/path/to/folder ก็ไม่ได้</p>
<p>สรุปว่า ตอนสั่ง backup ให้เพิ่มไปแบบนี้ครับ</p>
<pre class="language-bash"><code>gitlab-rake gitlab:backup:create DIRECTORY=path/to/folder</code></pre>
<p>จบ</p>