參考文獻:
https://www.yeboyzq.com/linux/ruanjiananzhuangweihu/1012.html
https://www.jianshu.com/p/d92fd42bb391
一、拉取鏡像:
docker pull gogs/gogs
可以對gogs鏡像進行二次編輯,Dockerfile如下:
FROM gogs/gogs
RUN echo 'root:admin123' | chpasswd \
&& echo 'git:321#@!' | chpasswd
View Code
二、需要映射的目錄:
/data 和 /app/gogs
docker-compose.yaml文件
version: "3"
services:
gogs:
image: gogs/gogs
container_name: gogs
ports:
- "22:22"
- "3000:3000"
environment:
- TZ=Asia/Shanghai
volumes:
- ./data:/data
- ./gogs:/app/gogs
restart: always
external_links:
- mysql
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
networks:
- mynet
networks:
mynet:
external: true
View Code
三、使用compose文件啟動容器
四、在配置gogs前,需要有一個數據庫,並新建數據庫gogs,配置用戶名密碼
登錄gogs:http://ip:3000,並填寫配置信息


以上信息填寫正確后,點擊立即安裝,即可安裝完成。
五、配置調整
任何修改都是發生在 custom/conf/app.ini
自定義配置文件中
概覽
名稱 |
描述 |
APP_NAME |
應用名稱,可以改成您的組織或公司名稱 |
RUN_USER |
運行應用的用戶名稱,我們建議您使用 git ,但如果您在個人計算機上運行 Gogs,請修改為您的系統用戶名稱。如果沒有正確設置這個值,很可能導致您的應用崩潰 |
RUN_MODE |
鑒於性能和其它考慮,建議在部署環境下修改為 prod 模式。在您完成安裝操作時,該值也會被設置為 prod |
服務器 (server
)
名稱 |
描述 |
PROTOCOL |
http 或 https |
DOMAIN |
服務器域名 |
ROOT_URL |
公開的完整 URL 路徑 |
HTTP_ADDR |
應用 HTTP 監聽地址 |
HTTP_PORT |
應用 HTTP 監聽端口號 |
UNIX_SOCKET_PERMISSION |
Unix 套接字文件的權限 |
LOCAL_ROOT_URL |
用於 Gogs 工作進程(如:SSH)回訪應用的本地(DMZ)URL,一般情況下請保持默認值,除非您的 SSH 服務器節點與 HTTP 並不是同一個節點入口 |
DISABLE_SSH |
當 SSH 功能不可用時可以禁用 |
START_SSH_SERVER |
啟用該選項來啟動內置 SSH 服務器 |
SSH_DOMAIN |
允許公用網絡訪問 SSH 的域名 |
SSH_PORT |
SSH 端口號,如果不為 22 的話可以在此修改 |
SSH_LISTEN_HOST |
內置 SSH 服務器監聽的地址 |
SSH_LISTEN_PORT |
內置 SSH 服務器監聽的端口 |
SSH_ROOT_PATH |
SSH 根目錄,一般為 ~/.ssh ,但必須填寫為 /home/git/.ssh |
REWRITE_AUTHORIZED_KEYS_AT_START |
激活該選項以在應用啟動時自動重寫 authorized_keys 文件,該選項在使用內置 SSH 服務器時將會被自動禁用 |
SSH_KEY_TEST_PATH |
用於測試 SSH 公鑰的臨時目錄 |
SSH_KEYGEN_PATH |
ssh-keygen 程序的路徑,默認為 ssh-keygen 即通過系統路徑查找 |
MINIMUM_KEY_SIZE_CHECK |
指定不同類型的公鑰的最小密鑰大小 |
OFFLINE_MODE |
激活該選項來禁止從 CDN 獲取靜態資源,同時 Gravatar 服務也將被自動禁用 |
DISABLE_ROUTER_LOG |
激活該選項來禁止打印路由日志 |
CERT_FILE |
HTTPS 授權文件路徑 |
KEY_FILE |
HTTPS 的密鑰文件路徑 |
STATIC_ROOT_PATH |
模板文件和靜態文件的上級目錄,默認為應用二進制所在的位置 |
APP_DATA_PATH |
應用內部數據的存放目錄 |
ENABLE_GZIP |
激活該選項來啟用應用級別 GZIP 支持 |
LANDING_PAGE |
未登錄用戶的默認首頁,可以是 home 或 explore (探索頁) |
倉庫 (repository
)
名稱 |
描述 |
ROOT |
用戶倉庫存儲根目錄,必須為絕對路徑,默認為 ~/<user name>/gogs-repositories |
SCRIPT_TYPE |
系統腳本類型,一般情況下均為 bash ,但有些用戶反應只能使用 sh |
ANSI_CHARSET |
當遇到無法識別的字符集時使用的默認字符集 |
FORCE_PRIVATE |
強制要求所有新建的倉庫都是私有的 |
MAX_CREATION_LIMIT |
全局默認的每個用戶可創建創建倉庫上限,-1 表示無限制 |
PREFERRED_LICENSES |
建議用戶首選的授權類型 |
DISABLE_HTTP_GIT |
激活該選項來禁止用戶通過 HTTP 對 Git 倉庫進行交互操作,即用戶只能通過 SSH 操作 |
ENABLE_LOCAL_PATH_MIGRATION |
激活該選項來啟用本地路徑遷移倉庫功能。啟動后默認只有管理員可以使用,普通用戶必須經由管理員授權 |
倉庫 - 編輯器 (repository.editor
)
名稱 |
描述 |
LINE_WRAP_EXTENSIONS |
需要顯示為行包裝的文件名后綴,通過逗號分隔。如果是無后綴名的文件,則單獨放置一個逗號,例如:.txt, |
倉庫 - 文件上傳 (repository.upload
)
名稱 |
描述 |
ENABLED |
激活該選項來啟用倉庫文件上傳功能 |
TEMP_PATH |
文件上傳的臨時存放目錄 |
ALLOWED_TYPES |
允許上傳的文件類型(例如:”image/jpeg|image/png”),留空表示允許上傳任意類型的文件 |
FILE_MAX_SIZE |
單個上傳的文件的最大體積,以 MB 為單位 |
MAX_FILES |
單次同時上傳的最多文件個數 |
版本發布 - 附件 (release.attachment
)
名稱 |
描述 |
ENABLED |
激活該選項來啟用版本發布附件功能 |
PATH |
存放附件的路徑 |
ALLOWED_TYPES |
允許上傳的 MIME 類型,例如 “image/jpeg|image/png”,使用 */* 允許所有類型的文件 |
MAX_SIZE |
最大允許上傳的附件體積,單位為 MB,例如 32 |
MAX_FILES |
最大允許一次性上傳的附件個數,例如 10 |
Markdown (markdown
)
名稱 |
描述 |
ENABLE_HARD_LINE_BREAK |
指示是否啟用硬性換行擴展 |
CUSTOM_URL_SCHEMES |
允許被解析為鏈接的自定義 URL 方案,例如 git (用於 git:// )和magnet (用於 magnet:// ) |
FILE_EXTENSIONS |
需要被渲染為 Markdown 格式的文件名后綴,通過逗號分隔。如果是無后綴名的文件,則單獨放置一個逗號,例如:.markdown, |
Smartypants (smartypants
)
名稱 |
描述 |
ENABLED |
指示是否啟用 Smartypants 擴展 |
HTTP (http
)
名稱 |
描述 |
ACCESS_CONTROL_ALLOW_ORIGIN |
頭信息 Access-Control-Allow-Origin 的自定義值,默認為空,即不響應此頭信息 |
數據庫 (database
)
名稱 |
描述 |
DB_TYPE |
數據庫類型,可以是 mysql 、postgres 、mssql 或 sqlite3 |
HOST |
數據庫主機地址與端口 |
NAME |
數據庫名稱 |
USER |
數據庫用戶名 |
PASSWD |
數據庫用戶密碼 |
SSL_MODE |
僅限 PostgreSQL 使用 |
PATH |
僅限 SQLite3 使用,數據庫文件路徑 |
應用管理 (admin
)
名稱 |
描述 |
DISABLE_REGULAR_ORG_CREATION |
激活該選項來禁止普通用戶(非管理員)創建組織 |
安全 (security
)
名稱 |
描述 |
INSTALL_LOCK |
用於指示是否允許訪問安裝頁面(該頁面可以設置管理員帳號,因此該選項非常重要) |
SECRET_KEY |
全局的加密密鑰,務必修改該值以確保您的服務器安全(會在每次安裝時自動生成隨機字符串) |
LOGIN_REMEMBER_DAYS |
記住登錄的天數 |
COOKIE_USERNAME |
記錄用戶名的 Cookie 名稱 |
COOKIE_REMEMBER_NAME |
記錄用戶自動登錄信息的 Cookie 名稱 |
REVERSE_PROXY_AUTHENTICATION_USER |
反向代理認證用戶的 Header 字段名 |
服務 (service
)
名稱 |
描述 |
ACTIVE_CODE_LIVE_MINUTES |
激活碼的有效期,單位為分鍾 |
RESET_PASSWD_CODE_LIVE_MINUTES |
重置密碼的有效期,單位為分鍾 |
REGISTER_EMAIL_CONFIRM |
激活該選項來要求注冊用戶必須驗證郵箱,要求已啟用 Mailer |
DISABLE_REGISTRATION |
激活該選項來禁止用戶注冊功能,只能由管理員創建帳號 |
SHOW_REGISTRATION_BUTTON |
用於指示是否顯示注冊按鈕 |
REQUIRE_SIGNIN_VIEW |
激活該選項來要求用戶必須登錄才能瀏覽任何頁面 |
ENABLE_CACHE_AVATAR |
激活該選項來緩存 Gravatar 的頭像 |
ENABLE_NOTIFY_MAIL |
激活該選項來發送通知郵件給關注者,例如創建 issue 時,要求已啟用 Mailer |
ENABLE_REVERSE_PROXY_AUTHENTICATION |
激活該選項來開啟反向代理用戶認證,請從 #165 了解更多信息 |
ENABLE_REVERSE_PROXY_AUTO_REGISTRATION |
激活該選項來開啟反向代理用戶認證的自動注冊功能 |
DISABLE_MINIMUM_KEY_SIZE_CHECK |
激活該選項來禁止檢查響應類型的密鑰最小長度 |
ENABLE_CAPTCHA |
激活該選項以在用戶注冊時要求輸入驗證碼 |
Web 鈎子 (webhook
)
名稱 |
描述 |
TYPES |
啟動的 Web 鈎子類型,可以是 gogs 、slack 或 discord |
DELIVER_TIMEOUT |
發送通知的超時時間,以秒為單位 |
SKIP_TLS_VERIFY |
指示是否允許向具有非信任證書的地址發送通知 |
PAGING_NUM |
Web 鈎子歷史頁面每頁顯示記錄條數 |
郵件 (mailer
)
名稱 |
描述 |
ENABLED |
啟用該選項以激活郵件服務 |
SUBJECT_PREFIX |
郵件標題的前綴 |
HOST |
SMTP 主機地址與端口 |
DISABLE_HELO |
禁用 HELO 操作 |
HELO_HOSTNAME |
HELO 操作的自定義主機名 |
SKIP_VERIFY |
不驗證自簽發證書的有效性 |
FROM |
郵箱的來自地址,遵循 RFC 5322規范,可以是一個單純的郵箱地址或者 "名字" <email@example.com> 的形式 |
USER |
郵箱用戶名 |
PASSWD |
郵箱密碼 |
USE_PLAIN_TEXT |
使用 text/plain 作為郵件內容格式 |
備注:Gogs 僅支持使用 STARTTLS 的 SMTP 協議
緩存 (cache
)
名稱 |
描述 |
ADAPTER |
緩存引擎適配器,可以為 momery 、redis 或 memcache 。如果您使用 redis 或 memcache ,請確保使用 -tags 選項重新構建所有依賴,例如:go build -tags='redis' |
INTERVAL |
僅限內存緩存使用,GC 周期,單位為秒 |
HOST |
僅限 redis 和 memcache 使用,主機地址和端口號 |
- |
Redis:network=tcp,addr=127.0.0.1:6379,password=macaron,db=0,pool_size=100,idle_timeout=180 |
- |
Memache:127.0.0.1:9090;127.0.0.1:9091 |
會話 (session
)
名稱 |
描述 |
PROVIDER |
Session 引擎提供者,可以是 memory 、file 、redis 或 mysql |
PROVIDER_CONFIG |
如果提供者為 file,則為文件根目錄;如果為其它提供者,則為主機地址和端口號 |
COOKIE_SECURE |
激活該選項以要求所有 session 操作均通過 HTTPS |
GC_INTERVAL_TIME |
GC 周期,單位為秒 |
圖片 (picture
)
名稱 |
描述 |
AVATAR_UPLOAD_PATH |
存放用戶上傳頭像的目錄 |
GRAVATAR_SOURCE |
可以是 gravatar 、duoshuo 或任何 URL,例如:http://cn.gravatar.com/avatar/ |
DISABLE_GRAVATAR |
激活該選項來僅使用本地頭像 |
ENABLE_FEDERATED_AVATAR |
激活該選項來啟用 Federated 頭像服務(http://www.libravatar.org),當 Gravatar 被禁用時此選項無法生效 |
附件 (attachment
)
名稱 |
描述 |
ENABLED |
激活該選項以允許用戶上傳附件 |
PATH |
存放附件的路徑 |
ALLOWED_TYPES |
允許上傳的 MIME 類型,例如 “image/jpeg|image/png”,使用 */* 允許所有類型的文件 |
MAX_SIZE |
最大允許上傳的附件體積,單位為 MB,例如 4 |
MAX_FILES |
最大允許一次性上傳的附件個數,例如 5 |
時間 (time
)
名稱 |
描述 |
FORMAT |
指定日期的輸出格式,默認為 RFC1123,其它可選的格式為 ANSIC、UnixDate、RubyDate、RFC822、RFC822Z、RFC850、RFC1123、RFC1123Z、RFC3339、RFC3339Nano、Kitchen、Stamp、StampMilli、StampMicro 和 StampNano。訪問 http://golang.org/pkg/time/#pkg-constants 查看詳情 |
日志 (log
)
名稱 |
描述 |
ROOT_PATH |
日志文件的根目錄 |
MODE |
日志記錄模式,默認為 console 。如果想要開啟多模式,請使用逗號分割,例如:"console, file" |
LEVEL |
基本日志級別,默認為 Trace |
日志 - 控制台 (log.console
)
名稱 |
描述 |
LEVEL |
控制台日志級別,留空則繼承父值 |
日志 - 文件 (log.file
)
名稱 |
描述 |
LEVEL |
控制台日志級別,留空則繼承父值 |
LOG_ROTATE |
激活該選項以啟用日志文件自轉 |
DAILY_ROTATE |
激活該選項以進行日常自轉 |
MAX_SIZE_SHIFT |
自轉需要達到的最大文件體積,使用位左移,默認為 28 即 1 << 28,表示 256MB |
MAX_LINES |
自轉需要達到的最大文件行數,默認為 1000000 |
MAX_DAYS |
保留自轉文件的最長期限,默認為 7 天后刪除 |
日志 - Slack (log.slack
)
名稱 |
描述 |
LEVEL |
控制台日志級別,留空則繼承父值 |
URL |
Slack Web 鈎子 URL |
Cron (cron
)
名稱 |
描述 |
ENABLED |
激活該選項以允許周期性運行 Cron 任務 |
RUN_AT_START |
激活該選項以允許在啟動時執行 Cron 任務 |
Cron - 更新鏡像 (cron.update_mirrors
)
名稱 |
描述 |
SCHEDULE |
定時更新倉庫鏡像的 Cron 語法,例如:@every 1h |
Cron - 倉庫健康檢查 (cron.repo_health_check
)
名稱 |
描述 |
SCHEDULE |
定時進行倉庫健康檢查的 Cron 語法,例如:@every 24h |
TIMEOUT |
倉庫健康檢查超時的定義語法,例如:60s |
ARGS |
git fsck 命令的參數,例如:--unreachable --tags |
Cron - 倉庫統計檢查 (cron.check_repo_stats
)
名稱 |
描述 |
RUN_AT_START |
激活該選項以在啟動時執行倉庫統計檢查 |
SCHEDULE |
定時進行倉庫統計檢查的 Cron 語法,例如:@every 24h |
Cron - 倉庫歸檔清理 (cron.repo_archive_cleanup
)
名稱 |
描述 |
RUN_AT_START |
激活該選項以在啟動時執行倉庫歸檔清理 |
SCHEDULE |
定時進行倉庫歸檔清理的 Cron 語法,例如:@every 24h |
OLDER_THAN |
倉庫歸檔的文件有效期,過期的歸檔將被清理,例如:24h |
Git (git
)
名稱 |
描述 |
DISABLE_DIFF_HIGHLIGHT |
激活該選項以禁用行內差異高亮 |
MAX_GIT_DIFF_LINES |
差異對比頁面單個文件顯示的最大行數 |
MAX_GIT_DIFF_LINE_CHARACTERS |
差異對比頁面單行顯示的最大字符數 |
MAX_GIT_DIFF_FILES |
差異對比頁面文件顯示的最多個數 |
GC_ARGS |
git gc 命令的參數,例如:--aggressive --auto |
Git - 超時 (git.timeout
)
名稱 |
描述 |
MIGRATE |
倉庫遷移操作超時,默認為 600 秒 |
MIRROR |
倉庫鏡像同步操作超時,默認為 300 秒 |
CLONE |
倉庫克隆操作超時,默認為 300 秒 |
PULL |
倉庫拉取操作超時,默認為 300 秒 |
GC |
倉庫垃圾回收操作超時,默認為 60 秒 |
UI (ui
)
名稱 |
描述 |
EXPLORE_PAGING_NUM |
探索頁面每頁顯示倉庫的數量 |
ISSUE_PAGING_NUM |
每頁顯示工單(Issue)的數量(應用到所有以列表形式顯示工單的頁面) |
FEED_MAX_COMMIT_NUM |
一條最新活動中顯示代碼提交(Commit)的最大數量 |
THEME_COLOR_META_TAG |
被用於 Android >= 5.0 版本 “theme-color” 標記的值,無效的值將被忽略並使用默認值(查看詳情) |
MAX_DISPLAY_FILE_SIZE |
顯示到頁面的最大文件體積(Byte) |
UI - Admin (ui.admin
)
名稱 |
描述 |
USER_PAGING_NUM |
用戶管理頁面每頁顯示記錄條數 |
REPO_PAGING_NUM |
倉庫管理頁面每頁顯示記錄條數 |
NOTICE_PAGING_NUM |
系統提示管理頁面每頁顯示記錄條數 |
ORG_PAGING_NUM |
組織管理頁面每頁顯示記錄條數 |
其他 (other
)
名稱 |
描述 |
SHOW_FOOTER_BRANDING |
激活該選項以在頁腳顯示 Gogs 推廣信息 |
SHOW_FOOTER_VERSION |
激活該選項以在頁腳顯示 Gogs 版本信息 |
SHOW_FOOTER_TEMPLATE_LOAD_TIME |
激活該選項以在頁腳顯示 Gogs 模板加載時間 |
PS:以下文件為本人的app.ini,可提供參考
APP_NAME = Gogs
RUN_USER = git
RUN_MODE = prod
[database]
DB_TYPE = mysql
HOST = mysql:3306
NAME = gogs
USER = gogs
PASSWD = gogs
SSL_MODE = disable
PATH = data/gogs.db
[repository]
ROOT = /data/git/gogs-repositories
[server]
DOMAIN = 193.168.1.126
HTTP_PORT = 3000
ROOT_URL = http://193.168.1.126:3000/
DISABLE_SSH = false
SSH_PORT = 22
START_SSH_SERVER = false
OFFLINE_MODE = false
SSH_ROOT_PATH = /home/git/.ssh
[mailer]
ENABLED = true
HOST = smtp.exmail.qq.com:465
FROM = codemanagement@***dom-bj.com
USER = codemanagement@***dom-bj.com
PASSWD = 3**1L****
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = false
ENABLE_CAPTCHA = true
REQUIRE_SIGNIN_VIEW = false
[picture]
DISABLE_GRAVATAR = false
ENABLE_FEDERATED_AVATAR = false
[session]
PROVIDER = file
[log]
MODE = file
LEVEL = Info
ROOT_PATH = /app/gogs/log
[security]
INSTALL_LOCK = true
SECRET_KEY = iJvZe19kYcSbxYd
[repository.upload]
ALLOWED_TYPES =
FILE_MAX_SIZE = 900
MAX_FILES = 99999
[release.attachment]
MAX_SIZE = 900
MAX_FILES = 9999
View Code