gogs安装与说明(docker)
前言:
作為一個開發,少不了和git打交道,像github,gitee是很流行的git線上托管平臺,而我們也搭建自己的git托管平臺,有條件的可以使用gitlab,它對硬件有要求,像博主這種沒條件用虛擬機的,推薦使用gogs。
Gogs 的是一個由 Go 語言開發的、可以簡單、快速搭建自助 Git 服務。在宿主機上的安裝可以參考官網:Gogs
不過在宿主機上直接安裝會麻煩一點,需要自行安裝git工具,如果使用ssh還要安裝ssh服務器,如果使用源碼安裝,還可能需要go語言的編譯環境,所以,如果是自己或者是小團隊使用,推薦使用docker來安裝
安裝
首先,我們要安裝docker,接著使用docker獲取gogs的鏡像:
# pull gogs鏡像
sudo docker pull gogs/gogs
當然你也可以去Docker Hub上面下載需要的版本
Docker Hub
鏡像中已經包換了git,ssh服務器等工具,無需我們安裝,我們只需使用鏡像創建容器即可:
# 在宿主機上創建掛在卷
$ mkdir /home/gogs
# 創建并運行一個容器,
# 將宿主機的10022端口映射到容器的22端口,
# 將宿主機的13000端口映射到容器的3000端口,10022端口和13000端口可以根據自己的情況修改sudo docker run -d -p 10022:22 -p 13000:3000 -v /home/gogs:/data gogs/gogs
這里需要注意的是兩點:
1、22端口是gogs的ssh服務端口,如果不開啟ssh服務,可不做這個端口映射,3000是gogs應用服務端口,這兩個端口可以修改,但是需要結合后續配置一同修改,這點在后面配置時來說明。2、這里做了一個卷映射,/data是容器內部gogs的數據目錄,gogs后續的配置、git倉庫等等都在這個目錄中,我們將它映射到宿主中,方便數據保存以及配置的改動,比如我這里的/home/gogs,需要提前將目錄創建好:sudo mkdir /home/gogs。
容器成功運行后,我們可以在瀏覽器通過宿主機的ip+13000端口打開gogs的首次運行安裝程序 ,比如我這里是 http://192.168.209.128:13000
數據庫設置
gogs目前支持3種數據庫:MySQL、PostgreSQL、SQLite3
如果沒有可用的數據庫,可以選擇SQLite3:
基本應用設置:
應用名稱:可以換成自定義名稱倉庫根目錄:使用默認就行了,默認/data/git/gogs-repositories,如果采用了數據卷映射,比如我這里因為/home/gogs映射/data,所以這個目錄在宿主機中的地址是/home/gogs/git/gogs-repositories運行系統用戶:不要修改,默認就是git用戶,修改可能會有問題域名:使用ssh時使用的域名或者IP(看后文使用說明)SSH 端口號:gogs啟用ssh時使用的端口號,默認22端口,如果修改了這個端口號,那么在上面創建容器時要對應的將10022端口映射到修改的端口號,如果不啟用ssh,則置空HTTP 端口號:gogs應用啟動的http端口,默認3000,如果修改了這個端口號,那么在上面創建容器時要對應的將13000端口映射到修改的端口號應用 URL:即打開應用的url地址,因為這里采用了docker,所以我們要修改成宿主機的地址轉發去訪問,比如這里我的宿主機地址:192.168.209.128,它的13000端口會轉發到容器的3000端口,所以這里填:http://192.168.209.128:13000/日志路徑:gogs的日志保存路徑,默認就行了
注:更多配置在/data/gogs/conf/app.ini中,如果采用了數據卷映射,比如我這里因為/home/gogs映射/data,所以這個文件在宿主機中的/home/gogs/gogs/conf/app.ini,更多說明見后文
使用說明
安裝完成之后,就可以使用了,默認情況下,我們需要自己注冊一個賬號,然后登陸:
?注冊登錄之后,我們可以在右上角的+號創建一個倉庫:
例如:
?創建完成之后大概是這樣子的:
?默認情況下是可以使用http進行git clone的,當然我們也可以使用https,不過需要做更多的配置,這時需要修改/data/gogs/conf/app.ini文件中的配置了,因為沒有cert證書,所以就不演示了。
另外,因為我們啟用了ssh,我們也可以使用ssh來操作:
?其中,我們上面安裝=》應用基礎設置中的【域名】配置就是上圖中紅色方框中的 git@域名:XXXX/XXX 中的域名部分
注意,如果你直接使用這個ssh地址去clone,會讓你輸入git的密碼:git@192.168.209.128's password:
這里可能你輸入任何密碼都是錯的,哪怕輸入對了密碼,可能也提示目錄不存在,什么原因?
首先,說明一下,ssh的連接地址是 user@host:path 格式,對于上面的demo倉庫中,git是用戶名,host是宿主機地址(192.168.209.128),test/demo.git是倉庫路徑。
那端口呢?熟悉ssh命令的話就會知道,ssh命令如果要指定端口,需要使用-p選項來指定,否則使用的是默認端口22.
再來看看,上面說過,因為我們的gogs是部署在docker上,對于ssh,我們使用宿主機的10022端口轉發到容器的22端口,那使用ssh進行clone時,我們的宿主機地址是192.168.209.128,因為沒有指定端口,所以連接的端口是宿主機的22端口,但是我們的宿主機的22端口沒有辦法到容器的22端口呀!!!所以他會認為git用戶是宿主機的,如果宿主機沒有創建git用戶,那么輸入任何密碼都是錯的,哪怕密碼對了,也可能因為未在宿主機安裝gogs或者路徑不存在而訪問失敗。
那是不是說我們在docker上部署的gogs不能使用ssh?其實是可以的,你可以將宿主的22端口轉發到容器的22端口。另外,還有一個做法,這里只是因為 git@域名:XXXX/XXX 這種格式進行clone不能指定端口而不能使用,我們可以使用另外一種類似http請求Url的ssh格式:ssh://user@host:port/path,
例如這里demo倉庫:git clone ssh://git@192.168.209.128:10022/test/demo.git
不過這里我們clone還是失敗了,大致的意思是,我們沒有配置ssh秘鑰。
ssh秘鑰
ssh秘鑰生成及使用參考:SSH公/私秘鑰的生成及使用
創建完成后,我們打開.ssh目錄下id_rsa.pub文件(公鑰文件),復制里面的全部內容,然后打開gogs控制面板=》右上角用戶配置=》SSH秘鑰=》新增秘鑰:
?保存后,我們就可以使用ssh://協議去clone了,
如果想在另一臺新電腦使用ssh,直接復制.ssh目錄下公鑰文件和私鑰文件,到新電腦的.ssh目錄下就可以使用ssh協議訪問項目了
去掉gogs的注冊按鈕?
為了安全考慮,對外的情況下,建議去掉gogs的注冊按鈕 。
修改配置文件
/home/git/gogs/custom/conf 目錄下的 app.ini文件
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = true
DISABLE_REGISTRATION = false ### 把此處的false改成 true,重啟,搞定
ENABLE_CAPTCHA = true
REQUIRE_SIGNIN_VIEW = false
解決gogs網頁打開慢?
在install的安裝界面,禁用Gravatar服務;或者在配置文件中禁用gravatar服務,使用本地頭像;?
vim gogs/conf/app.ini
[picture]
DISABLE_GRAVATAR = true
ENABLE_FEDERATED_AVATAR = true
總結
以上是生活随笔為你收集整理的gogs安装与说明(docker)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ue 编写linux脚本,UltraEd
- 下一篇: 戴尔什么笔记本好(戴尔什么笔记本电脑好)